Я пытаюсь получить данные из таблицы, в которой 13 миллионов записей, используя нумерацию страниц.Я создал представление, которое отфильтровывает данные, которые я никогда не буду искать, и которое уменьшит количество записей до 1,2 млн.
SELECT (...select fields),
(SUM(...Value fields)),
COUNT_BIG(*)
FROM TableA
INNER JOIN TableB ON TableB.column2 = TableA.Column1
AND TableB.Type IN (0, 1, 2, 5)
AND TableB.Status = 10
INNER JOIN TableC ON TableC.Column1 = TableB.Column3
INNER JOIN TableD ON TableD.Column1 = TableC.Column2
INNER JOIN TableE ON TableE.Column4 = TableD.Column2
INNER JOIN TableF ON TableF.Column1 = TableD.Column2
WHERE TableA.Column5 = 5
AND TableA.Column6 > convert(datetime, '2019-05-6', 120)
GROUP BY (...select fields)
. Затем я проиндексировал его с помощью столбца первичного ключа TableA и первичного ключа.столбец таблицы B
CREATE UNIQUE CLUSTERED INDEX [IX_TRD_LTD_LiabilityTradeData] ON [dbo].[vw_TRD_LD_LiabilityData_v2]
(
[TradeTicket] ASC,
[MaturityDate] ASC,
[SecurityID] ASC,
OptionType ASC,
Portfolio ASC,
IndexDate ASC,
LegalEntity ASC,
DerLegalEntity
)
Индекс создан, и число извлекаемых записей составляет 1,2 миллиона записей.
Пока я читаю данные из этого представления с включенным планом выполнения запроса,План выполнения показывает, что для извлечения данных читается фактическая таблица.
Как настроить, чтобы не переходить к базовым таблицам и получать данные из представления.