我得到了一个表 A 和一个表 B(以及一个并不真正相关的表 C)。关系为 1:n。
Table A
- id
- c_foreign_key
Table B
- id
- A_id
- datetime
表 A 约有 40 万个条目,表 B 约有 2000 万个条目。
我有一个时间范围,比如说从 2014/01/01 到 2014/12/31。
我想要这个范围内每个月的数据是: 计算表 A 中的所有条目,按 c_foreign_key 分组,其中表 A 在表 B 中没有(月 - 1.年到月)的条目。
结果应如下所示:
date c_foreign_key count(*)
--------------------------------
14/01 1 2000
14/01 2 3000
...
14/02 1 4000
14/01 2 6000
...
我已经尝试过左连接和“不在选择中”,每个月的性能都不是很好。
最佳答案
您应该通过解释
更多信息来调试您的 SQL 查询 Mysql Explain Syntax ,您还应该将 index
- es 放在 datetime
字段上以获得更好的性能。解释通常用于查看mysql在您的查询中使用了哪些索引。
关于Mysql查询从A开始计数而不是在B中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28296667/