SQL Server - ускорить счет на большой таблице

У меня есть стол с близким30 миллионов записей. Всего несколько столбцов. Один из столбца'Born' не более чем30 разных значений и есть индекс, определенный на нем. Мне нужно иметь возможность фильтровать по этому столбцу и эффективно просматривать результаты.

На данный момент у меня есть (например, если год "Я ищу это1970' - это параметр в моей хранимой процедуре):

WITH PersonSubset as
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY Born asc) AS Row
    FROM Person WITH (INDEX(IX_Person_Born)) 
    WHERE Born = '1970'
)
SELECT *, (SELECT count(*) FROM PersonSubset) AS TotalPeople
FROM PersonSubset
WHERE Row BETWEEN 0 AND 30

Каждый запрос такого рода (толькоBorn используемый параметр) возвращает чуть более 1 миллиона результатов. Я'мы заметили, что самые большие накладные расходы находятся на счетчике, используемом для получения итоговых результатов. Если я удалю(SELECT count(*) FROM PersonSubset) AS TotalPeople из условия выбора все это значительно ускоряется.

Есть ли способ ускорить подсчет в этом запросе. Что меня волнует, так это чтобы возвращались постраничные результаты и общее количество.

Ответы на вопрос(4)

Ваш ответ на вопрос