Informix-有效地查找10个最近的呼叫

时间:2018-08-02 21:01:10

标签: sql informix

我有一张桌子,上面有电话号码和时间戳之类的数据。我想找到十个最近的唯一通话。此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万条记录,因此它非常慢。有没有更好的方法来执行此查询?

1 个答案:

答案 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