现在有3个表,有关字段如下:
企业表company
id,name,createDate
地区表area
id,name
项目表items
id,createDate,area_id,company_id
数据库设计的时候,企业表和地区表并没有直接关联,而是通过项目表进行间接关联
现在需要获取每个地区 本年 和 本月 的企业数
现在我有2个处理方法:
第一个是在程序里循环area的id,然后在每个循环单元里查询items 的 count(DISTINCT company_id)计数.
第二个是选出company和items的全连接,对company.id进行分组,然后在程序里对数据进行计数.
这两个查询方式效率都不太理想.所以不想循环遍历,或是 查出所有 再进行计数,希望能最大限度的从数据库查询获取
另外,area表和company表可以不引入查询,直接使用items 的 area_id和company_id进行区分也可.(只为计数)
以上 createDate 字段均为 datetime型.
求高手指点下,
注:mysql数据库
请高手对现有mysql数据库设计一个高效率的查询
答案:2 悬赏:60 手机版
解决时间 2021-01-31 14:29
- 提问者网友:且恨且铭记
- 2021-01-31 08:33
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-01-31 08:57
查询日期的嘛,可以直接在sql语句中使用时间段啊。
比如查询今年的 就“createDate >='2010-01-01' and createDate<='2010-12-31'”
查询月份也可以这么做,比如查询1月份的:“createDate >='2010-01-01 and createDate<='2010-01-31''” 在时间字段上建立索引 可以加快查询速度。
获取数量的话,可以用count 也可以直接用查询语句获得的符合条件的结果数。
如果不清楚的话可以在线聊。
比如查询今年的 就“createDate >='2010-01-01' and createDate<='2010-12-31'”
查询月份也可以这么做,比如查询1月份的:“createDate >='2010-01-01 and createDate<='2010-01-31''” 在时间字段上建立索引 可以加快查询速度。
获取数量的话,可以用count 也可以直接用查询语句获得的符合条件的结果数。
如果不清楚的话可以在线聊。
全部回答
- 1楼网友:酒者煙囻
- 2021-01-31 09:26
支持一下感觉挺不错的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯