选择非重复记录

Meh*_*hdi 5 mysql sql performance select not-exists

我有一张约有5000万条记录的表格.

表结构如下所示,calleridcall_start字段都被编入索引.

id - callerid - call_start

我想选择他们的call_start大于'2013-12-22'的所有记录,并且在整个表格中'callerid'在'2013-12-22'之前没有重复.

我使用过这样的东西:

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')
Run Code Online (Sandbox Code Playgroud)

但这非常慢,任何建议都非常感激.

val*_*lex 2

只是好奇这个查询在您的表上是否运行得很快:

SELECT ca.`callerid` 
FROM call_archives 
GROUP BY ca.`callerid` 
HAVING MIN(ca.`call_start`) >='2013-12-22' 
Run Code Online (Sandbox Code Playgroud)