SQL логическое чтение

У меня есть запрос, который выполняется много из-за того, что он находится в функции, которая вызывается для большого набора строк.

запрос SELECT @sql = NULL WHERE @sql = ''

Хотя это показывает мне 0 физических чтений.

Это показывает мне около 17000 логических операций чтения.

Какие-либо объяснения??

1 ответ

Посмотрите на следующий вопрос и ответы:

https://dba.stackexchange.com/questions/9302/why-so-many-logical-reads

Это чтения страниц, заметьте. Это актуально.

Возможности:

  • Неправильная или недостаточная индексация. Индексируются ли какие-либо из отфильтрованных полей? Насколько широки индексы (см. Ниже)?
  • Плохая плотность страниц. Какой у вас коэффициент заполнения по вашим индексам? Если он слишком низкий, вы тянете много страниц для этого.
  • Очень широкие показатели. Если у вас есть индексы, но у них много полей или очень широкие поля, то вы получите меньше строк на страницу.

Я предполагаю, что у вас есть сканирование таблицы или кластерного индекса, по крайней мере, по одному из этих критериев, и таблица широко используется, что приводит к чтению большого количества данных, независимо от того, сколько данных вам действительно нужно.

Другие вопросы по тегам