Выберите Max () слишком медленно - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь получить самую последнюю дату из столбца в SQL Server 2016, но для получения этих данных требуется около 10 секунд.В таблице более 146 миллионов записей.

В сочетании с другими запросами, которые я должен выполнить, выполнение кода занимает более 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 голосов
/ 11 октября 2018

Если вы хотите быстро установить максимальную дату, то создайте индекс для этого столбца: (mydate).

. Вы должны сделать следующее:

select max(mydate)
from t;

Или, если хотите, чтобы всестроки:

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