我有一张约有5000万条记录的表。
该表的结构如下所示,并且对调用者id 和调用_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'
关于mysql - 选择非重复记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20785518/