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

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

DMV для начинающих

Пересказ статьи Monica Rathbun. DMV’s for the Beginner Я замечаю, что некоторые администраторы баз данных и разработчики никогда не обращают внимания на динамические административные представления (DMV), которые доступны в SQL Server, начиная с версии 2005. Эти представления предоставляют полезные средства для определения того, что происходит с конкретным экземпляром SQL Server. Итак, в этой статье я …

Фильтрованные индексы: основы

Пересказ статьи Monica Rathbun. Filtered Index Basics Многие администраторы баз данных вполне осознают важность индексов и знают, как их создавать. Однако я обнаружила, что некоторым из них требуется еще глубже погрузиться в оптимизацию своих индексов и воспользоваться преимуществом, которое предоставляют фильтрованные индексы.

IN или UNION ALL?

Пересказ статьи Bert Wagner. IN vs UNION ALL Когда вам необходимо отфильтровать результаты запроса по множеству значений, вы, вероятно, используете оператор IN() или множество предикатов разделенных OR: WHERE Col1 IN (’A’,’B’,’C’) или WHERE Col1 = ‘A’ OR Col1 = ‘B’ OR Col1 = ‘C’ В то время как SQL Server строит один и тот же …

Коррелирующие подзапросы или производные таблицы?

Пересказ статьи Bert Wagner. Correlated Subqueries vs Derived Tables Коррелирующие подзапросы предлагают интуитивно понятный синтаксис для написания запросов, которые возвращают связанные данные. Однако они зачастую обладают плохой производительностью из-за необходимости их выполнения для каждого связанного значения.

Оконные функции против 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 всегда были обоюдоострым мечом — они великолепны для тех разработчиков, кто стремится уйти от утомительной логики, а не повторять её от запроса к запросу. Но они же ужасно влияют на производительность в рабочей системе, поскольку оптимизатор не может обработать их надлежащим образом. …