我有一张桌子,上面有电话号码和时间戳之类的数据。我想找到十个最近的唯一通话。此SQL查询有效:
SELECT first 10 t.originatordn
FROM
(SELECT DISTINCT a.originatordn,a.startdatetime AS time
FROM contactcalldetail a
WHERE originatordn <> '') t
ORDER BY t.time DESC
问题在于此表有超过400万条记录,因此它非常慢。有没有更好的方法来执行此查询?
答案 0 :(得分:0)
没有索引,我看不到如何使其快速。因此,我建议您创建一个索引(如果您还没有的话),并运行一个更简单的查询,以便SQL优化器可以通过使用“仅索引扫描”来执行。
create index ix1 on contactcalldetail (startdatetime, originatordn)
select
distinct originatordn as calling_number
from contactcalldetail
where originatordn <> ''
order by a.startdatetime desc
limit 10