选择Max()太慢

时间:2018-10-11 13:44:40

标签: sql sql-server tsql group-by

我正在尝试从SQL Server 2016中的一列获取最新日期,但是检索该数据大约需要10秒钟。该表有超过1.46亿条记录。

结合我必须运行代码的其他查询,需要1分钟以上的时间才能完成。

如何使此查询更快?

  DECLARE @MaxDate DATE
  SELECT    @MaxDate = MAX(MyDate)
  SELECT COUNT(*) FROM  MyTable

我什至尝试过

    SELECT c.*
FROM (SELECT MyDate, COUNT(*) as TheDate,
             RANK() OVER (ORDER BY COUNT(*) DESC) as seqnum
      FROM MyTable
      GROUP BY MyDate
     ) c
WHERE seqnum = 1;

它是相同的速度

1 个答案:

答案 0 :(得分:3)

如果您想快速获得最大日期,请在该列(mydate)上创建一个索引。

您应该能够:

select max(mydate)
from t;

或者如果要所有行:

select top (1) with ties t.*
from t
order by mydate desc;