我有一张约有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/

10-10 11:58