永发信息网

请高手对现有mysql数据库设计一个高效率的查询

答案:2  悬赏:60  手机版
解决时间 2021-01-31 14:29
  • 提问者网友:且恨且铭记
  • 2021-01-31 08:33
现在有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数据库
最佳答案
  • 五星知识达人网友:冷風如刀
  • 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 也可以直接用查询语句获得的符合条件的结果数。
如果不清楚的话可以在线聊。
全部回答
  • 1楼网友:酒者煙囻
  • 2021-01-31 09:26
支持一下感觉挺不错的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯