Какой индекс я должен создать при использовании нескольких OrderBy
Я использую Entity Framework Core и читаю некоторые данные с тысячами записей. У каждой записи есть много столбцов, из которых я использую 3 (a, b и c) и делаю:
OrderBy(a).ThenBy(b).ThenBy(c);
А потом я применяю сортировку и нумерацию страниц.
Чтобы повысить скорость этого запроса, какой индекс (если есть) мне следует создать? Модификация таблиц не так часто, как чтение. Должен ли я создать один индекс с 3 столбцами? в каком порядке? или по одному на каждый столбец?
1 ответ
Если в вашем запросе используется предложение WHERE, как показано ниже...
SELECT ColumnA,
FROM Table
WHERE ColumnA = 0
ORDER BY Column1, Column2, Column3
Затем создайте свой индекс в следующем порядке ColumnA, Column1, Column2, Column3.
Если вы используете OFFSET FETCH NEXT ROWS ONLY для подкачки, этот индекс все еще работает
SELECT ColumnA,
FROM Table
WHERE ColumnA = 0
ORDER BY Column1, Column2, Column3
OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
Если в вашем запросе есть только предложение ORDER BY без предложения WHERE, создайте индекс в следующем порядке Column1, Column2, Column3.