Эксплуатация SQL Server

Sargable-предикаты в SQL Server

Индекс не поможет, если предикат скрывает столбец внутри функции или вычисления. SQL Server может просканировать все строки вместо перехода к диапазону.

Sargable-предикаты в SQL Server

Индекс не поможет, если предикат скрывает столбец внутри функции или вычисления. SQL Server может просканировать все строки вместо перехода к диапазону.

Что измерять

Проверяйте seek и residual predicates, логические чтения, оценки и выражения над индексированными столбцами. Частые причины: функции дат, начальный wildcard, арифметика и обработка null.

Практический подход

Задавайте даты полуоткрытыми диапазонами, переносите вычисления на константы, применяйте persisted computed column для стабильных выражений и согласуйте составной индекс с предикатами.

Чего следует избегать

Не добавляйте индекс до переписывания запроса, не используйте BETWEEN небрежно с datetime и не считайте любой seek эффективным.

Эксплуатационный результат

Sargability дает оптимизатору доступный диапазон и часто сокращает работу лучше подсказки.

Проверка перед production

Зафиксируйте исходные показатели и определите ожидаемое улучшение. Проверьте решение на репрезентативных данных и при реальной параллельной нагрузке. Сохраните исходную настройку или план, подготовьте откат и наблюдайте следующий обычный пик нагрузки.

Чтобы применить этот подход к конкретной среде SQL Server, используйте форму ниже и укажите версию SQL Server, размер базы, профиль нагрузки и уже собранные данные.

Вопрос по статье

Есть вопрос по этой теме?

Расскажите, что вы оцениваете или с какой проблемой столкнулись. Мы ответим с практической рекомендацией.

Inquiries are not enabled in this preview.

Задать вопрос по этой статье