SQL логическое чтение
У меня есть запрос, который выполняется много из-за того, что он находится в функции, которая вызывается для большого набора строк.
запрос SELECT @sql = NULL WHERE @sql = ''
Хотя это показывает мне 0 физических чтений.
Это показывает мне около 17000 логических операций чтения.
Какие-либо объяснения??
1 ответ
Посмотрите на следующий вопрос и ответы:
https://dba.stackexchange.com/questions/9302/why-so-many-logical-reads
Это чтения страниц, заметьте. Это актуально.
Возможности:
- Неправильная или недостаточная индексация. Индексируются ли какие-либо из отфильтрованных полей? Насколько широки индексы (см. Ниже)?
- Плохая плотность страниц. Какой у вас коэффициент заполнения по вашим индексам? Если он слишком низкий, вы тянете много страниц для этого.
- Очень широкие показатели. Если у вас есть индексы, но у них много полей или очень широкие поля, то вы получите меньше строк на страницу.
Я предполагаю, что у вас есть сканирование таблицы или кластерного индекса, по крайней мере, по одному из этих критериев, и таблица широко используется, что приводит к чтению большого количества данных, независимо от того, сколько данных вам действительно нужно.