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

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

Оконные функции против GROUP BY

Пересказ статьи Bert Wagner. Window Functions vs GROUP BYs Имеется много направлений улучшения производительности запроса: индексы, статистика, конфигурационные параметры и т.д. Однако не всегда имеющиеся условия позволяют вам использовать эти возможности (например, базы данных компаний-поставщиков), оставляя только одну возможность — переписать запрос.

Что такое неявное преобразование?

Пересказ статьи Monica Rathbun. What is Implicit Conversion? Это еще одна небольшая публикация по поводу простых изменений, которые вы можете сделать в своем коде, чтобы получить более оптимальный план выполнения. На этот раз речь пойдет о неявных преобразованиях. Неявное преобразование происходит, когда SQL Server должен автоматически преобразовать данные из одного типа в другой при сравнении …

Сканирование индекса — не всегда плохо, а поиск по индексу — не всегда хорошо

Пересказ статьи Brent Ozar. Index scans aren’t always bad, and index seeks aren’t always great Когда-нибудь вам говорили, что: Поиск по индексу (Index seeks) является быстрой малозатратной операцией. Сканирование таблиц (table scan) — убогие, медленные операции. И с тех пор вы при анализе плана выполнения выискивали эти существенно влияющие на производительность сканирования кластерного индекса. А …

Стоимость бесполезных суррогатных ключей в таблицах связей

Пересказ статьи lukaseder. The Cost of Useless Surrogate Keys in Relationship Tables Насколько хорош естественный ключ? Это очень сложный вопрос для большинства сущностей на этапе проектирования схемы. В некоторых редких случаях, кажется, имеется «очевидный» кандидат, обусловленный различными стандартами ISO, например:

Встраивание скалярных UDF в SQL Server 2019

Пересказ статьи Aaron Bertrand. Scalar UDF Inlining in SQL Server 2019 Скалярные UDF всегда были обоюдоострым мечом — они великолепны для тех разработчиков, кто стремится уйти от утомительной логики, а не повторять её от запроса к запросу. Но они же ужасно влияют на производительность в рабочей системе, поскольку оптимизатор не может обработать их надлежащим образом. …

Сравнение планов в Management Studio

Пересказ статьи Gail. Comparing plans in Management Studio Ранее я рассматривал использование Query Store (хранилище запросов) для сравнения планов выполнения, но это не единственный способ, который позволяет сравнить два плана выполнения. Другой метод требует сохраненного плана выполнения и просмотрщика планов выполнения в Management Stidio.

Использование индексирования для решения проблем блокировки и тупика

Пересказ статьи David Fowler. Using Indexing To Solve Blocking and Deadlocking Issues Когда какое-то время назад в беседе я предположил, что индекс мог бы, возможно, решить проблему тупика, реакция была такой: «Что? Как может индекс решить проблему тупика?»

Производительность оконных агрегатов в SQL Server 2019

Пересказ статьи Kathi Kellenberger. The Performance of Window Aggregates Revisited with SQL Server 2019 В 2005 и 2012 Майкрософт ввела в SQL Server большое число оконных функций, например, мою любимую функцию LAG. Эти функции отличает хорошая производительность, но главное преимущество их, на мой взгляд, состоит в простом написании сложных запросов. Я многие годы с удовольствием …

Сортировка индексов

Пересказ статьи Erik Darling. Index Sortables. Крики и вопли Если вы читали мой пост о параметризованных TOP, вы тогда же могли возмутиться одним индексом, который я создавал. И справедливо — это был ужасный индекс по причинам, которые мы тут и обсудим. Если этот индекс сводит вас с ума, поздравляю, вы весьма сообразительны. CREATE INDEX ix_whatever …

Порядок столбцов в индексе

Пересказ статьи Mike Byrd. Index Column Order – Be Happy! Мне всегда было интересно, как SQL Server выбирает порядок столбцов в предлагаемых индексах. И недавно я просто не смог сопротивляться искушению проверить это. Рассмотрим запрос: