Рубрика «Оптимизация»

Вопросы, связанные с оптимизацией запросов.

Что такое «включенные столбцы» для некластеризованных индексов?

Пересказ статьи Michael Salzmann. ”Included columns” for non-clustered indexes explained Microsoft SQL Server предоставляет возможность использовать «включенные столбцы» (Included columns) при создании некластеризованных индексов. В статье объясняется эта особенность, её плюсы и минусы.

Под капотом SQL Server. Основы: кэширование данных

Пересказ статьи Eduardo Pivaral. SQL Engine basics: Caching data Ядро SQL Server выполняет замечательную работу по оптимизации производительности запросов, используя при этом различные методы, одним из которых является кэширование данных.

PARSE против CAST и CONVERT

Пересказ статьи Max Vernon. PARSE vs CAST and CONVERT T-SQL обычно предоставляет много способов «снять шкурку с кота», как говорится. Здесь мы рассмотрим два интересных способа преобразования дат и времени из символьных столбцов в столбец, использующий тип данных datetime.

Хранилище запросов, навязывание плана и табличные переменные

Пересказ статьи Grant Fritchey. Query Store, Plan Forcing and Table Variables Steinar Andersen рассказал о проблеме, с которой он столкнулся при навязывании планов, которые содержали табличные переменные. Без паники. Конечно, по большей части вы можете навязывать план с табличными переменными. У Стейнара была довольно специфическая проблема. Прежде чем я перейду к объяснению, замечу, что Стейнар …

Навязывание плана (Plan Forcing) в SQL Server

Пересказ статьи Erin Stellato. Plan Forcing in SQL Server Навязанные планы в SQL Server предоставляют очень легкий метод для DBA и разработчиков стабилизировать производительность запроса. Однако plan forcing не является постоянным решением. Plan forcing опирается на следующие предпосылки: существует множество планов для запроса, и один из них наиболее предпочтителен с точки зрения производительности.

Автоматическая корректировка плана в SQL Server

Пересказ статьи Erin Stellato. Automatic Plan Correction in SQL Server Возможность автоматической настройки в SQL Server 2017 Enterprise Edition и Azure SQL Database является первым шагом к сокращению времени профессионалами в области данных, которое они проводят в поисках решения проблем с производительностью. Эта возможность включает автоматическую коррекцию плана (Automatic Plan Correction) и автоматическое управление индексами …

Apply или соединение вложенными циклами?

Пересказ статьи Paul White. Apply versus Nested Loops Join SQL является декларативным языком. Мы используем SQL, чтобы написать логическую спецификацию запроса, описывающую результат, который мы хотим получить. Например, мы могли бы написать запрос с использование либо APPLY, либо JOIN, которые логически описывают в точности одни и те же результаты.

Введение в статистику

Пересказ статьи Johnny Bieber. Introduction to Statistics SQL Server использует статистику для создания планов запроса, которые улучшают производительность. При написании запросов есть простые правила, например, когда использовать левые соединения, когда внутренние и т.д. Оптимизатор запросов, с другой стороны, использует статистику, чтобы решить, каким именно образом извлекать данные и возвращать их пользователю. Если вы выполняете один …

Порядок выполнения предикатов на столбцах смешанных типов данных

Пересказ статьи Bert Wagner. Predicate Execution Order on Mixed Data Type Columns Основанный на стоимости оптимизатор запросов SQL Server довольно хорошо понимает, в каком порядке фильтровать ваши данные, чтобы добиться быстрого выполнения запросов. Он учитывает такие вещи как покрытие индексами, распределение данных и многое другое, чтобы решить, как извлекать данные для вашего запроса.

15 причин по которым ваш запрос, который вчера еще работал быстро, сегодня работает медленно

Пересказ статьи Brent Ozar. 15 Reasons Your Query Was Fast Yesterday, But Slow Today В порядке, определяемом частотой, с которой я их наблюдаю: 1. Различная рабочая нагрузка на сервер (например, запущен процесс создания резервной копии). 2. Вы получаете другой план запроса из-за прослушивания параметра (parameter sniffing). 3. Изменился запрос, например, кто-то обновил код на сервере …