我有一张约有5000万条记录的表。
表结构如下所示,并且对callerid和call_start字段都建立了索引。
id-来电显示-call_start
我想选择整个表中其call_start大于'2013-12-22'并且在'2013-12-22'之前不重复显示callerid的所有记录。
我用了这样的东西:
SELECT DISTINCT
ca.`callerid`
FROM
call_archives AS ca
WHERE ca.`call_start` >= '2013-12-22'
AND ca.`callerid` NOT IN
(SELECT DISTINCT
ca.`callerid`
FROM
call_archives AS ca
WHERE ca.`call_start` < '2013-12-21')
但这非常慢,任何建议都非常感谢。
只是好奇这个查询在您的表上是否快速运行:
SELECT ca.`callerid`
FROM call_archives
GROUP BY ca.`callerid`
HAVING MIN(ca.`call_start`) >='2013-12-22'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句