Skip to content

Не используйте DISTINCT в качестве "исправления join"

Пересказ статьи Aaron Bertrand. Don’t use DISTINCT as a “join-fixer”


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

Продолжить чтение "Не используйте DISTINCT в качестве "исправления join""
Категории: T-SQL

Причины скачков производительности запроса в SQL Server

Пересказ статьи Aaron Bertrand. Reasons for SQL Server Query Performance Fluctuations


Производительность запроса может испытывать скачки с течением времени, и это не обязательно обусловлено изменениями в самом запросе (или в коде приложения, которое его вызывает). Пользователи часто спрашивают, почему запрос внезапно стал работать медленнее, хотя они ничего не меняли в приложении, а данные не изменялись резко. В этой статье мы укажем на несколько причин - их существует много - по которым запрос мог замедлиться сегодня по сравнению с тем, что было 10 минут назад, две недели назад, или прошлым летом.

Прежде чем вникать в возможные причины скачков производительности, давайте сделаем обзор того, что происходит в SQL Server при обработке запросов.

Продолжить чтение "Причины скачков производительности запроса в SQL Server"

Понимание предложения ROWS BETWEEN в SQL

Пересказ статьи Rahma Hassan. Understanding the “ROWS BETWEEN” Clause in SQL


В SQL предложение “ROWS BETWEEN” является мощным средством, которое позволяет вам определить окно строк для анализа или вычислений непосредственно в запросе. Указывая диапазон строк, вы можете выполнять вычисления или применять агрегатные функции к подмножеству данных, а не ко всему результирующему набору. Цель данной статьи - сделать понятным предложение “ROWS BETWEEN” и его использование на примерах.
Продолжить чтение "Понимание предложения ROWS BETWEEN в SQL"

Восстановление в режиме ожидания; обзор и выученный урок

Пересказ статьи Andy Warren. Restore With Standby; A Review and A Lesson Learned


Имеются функции SQL Server, которые я использую часто и считаю, что понимаю их достаточно хорошо. Есть функции, о которых я знаю, но использую редко, и есть большой список вещей, на которые я только взглянул или использовал один раз. В части знакомых мне вещей я иногда обнаруживаю, что не вполне их понимал или пропустил темные углы, поскольку мне никогда не требовалось исследовать их. Хотя возникает огорчение или фейспалм Пикарда — естественные реакции на "Я думал, что знаю это", лучше осознать, что теперь у меня на один пробел меньше, чем было раньше. Здесь, как вы, вероятно, предположили, я имею в виду восстановление в режиме ожидания. Я начну с краткого обзора резервирования журнала, norecovery и standby, затем покажу вам как это работает на нескольких примерах, включая тот, который иллюстрирует урок, который я при этом получил, и сопровожу его некоторыми замечаниями о том, почему эта мелочь в восстановлении может однажды избавить вас от плохого настроения.
Продолжить чтение "Восстановление в режиме ожидания; обзор и выученный урок"
Категории: T-SQL

Различные способы преобразования целого значения в строку

Пересказ статьи Daniel Calbimonte. Different ways to Convert a SQL INT Value into a String Value


Здесь я покажу различные способы преобразования данных в SQL Server из целого типа в строковый с помощью разных операторов SQL.

Начинаем


Пусть у нас есть числовой столбец OrderQty в таблице WorkOrder в производственной базе данных SQL.

SELECT [OrderQty]
FROM [Production].[WorkOrder]

Продолжить чтение "Различные способы преобразования целого значения в строку"
Категории: T-SQL

Проблемы плана выполнения SQL Server при использовании предложения TOP и различных параметров

Пересказ статьи Mehdi Ghapanvari. SQL Server Execution Plan Issues when using TOP Clause and Various Parameters


Запрос иногда оказывается супер быстрым, а иногда - очень медленным. Одной из основных причин такого поведения является прослушивание параметра (Parameter Sniffing). Имеется несколько подходов, связанных с проблемой прослушивания параметра, и в этой статье обсуждаются эффективные методы для обработки Parameter Sniffing в операторах SELECT, содержащих предложение TOP.
Продолжить чтение "Проблемы плана выполнения SQL Server при использовании предложения TOP и различных параметров"

Массивы и списки в SQL Server. Сокращенная версия

Пересказ статьи Erland Sommarskog. Arrays and Lists in SQL Server. The Short Version


1. Введение


Эта сокращенная статья ориентирована на читателей, имеющих ограниченный опыт в программировании в SQL Server, в которой обсуждается как обрабатывать список значений, разделенный запятыми или каким-нибудь другим разделителем. Полная версии статьи включает много других способов разбиение списков на таблицы - и вам будет о чем поспорить. Эта длинная статья предназначена для несколько более опытной аудитории. Скорее всего, сокращенная статья даст вам то, что требуется, но в некоторых местах я ссылаюсь на длинную статью для пользователей с особыми потребностями.
Продолжить чтение "Массивы и списки в SQL Server. Сокращенная версия"
Категории: T-SQL

Как, используя Python, подключиться к SQL Server и выполнить запрос

Пересказ статьи Haq Nawaz. How to Connect & Query SQL Server using Python


Сегодня я расскажу, как подключиться к базам данных SQL, используя Python. Это распространенный вопрос, который возникает в серии ETL. Поэтому я решил рассмотреть его и направлять посетителей сюда, если у них возникнут проблемы с подключением.

Эта установка SQL Server позволит нам:

  • Установить подключение к базе данных SQL Server из Python

  • Выполнять запросы к базе данных SQL Server

  • Извлекать и сохранять данные в фрейме данных

Продолжить чтение "Как, используя Python, подключиться к SQL Server и выполнить запрос"

Что это за хинт запроса READPAST?

Пересказ статьи Chad Callihan. What is the READPAST Query Hint?


Вы когда-нибудь слышали о хинте запроса READPAST? Я бы сказал, что это родной брат NOLOCK. С помощью NOLOCK вы получите данные быстрей, но с риском грязных чтений. С помощью READPAST SQL Server вообще пропустит заблокированные данные. Это может быть как полезно, так и весьма опасно, если вы не знаете, как это используется.

Давайте сравним NOLOCK и READPAST, чтобы вы знали, чего следует ожидать, если вы хотите правильно использовать эти хинты запросов.
Продолжить чтение "Что это за хинт запроса READPAST?"

Как вы можете использовать IS [NOT] DISTINCT FROM

Пересказ статьи Chad Callihan. How You Can Use IS [NOT] DISTINCT FROM


Недавно я поигрался с одной функцией, введенной в SQL Server 2022 - IS [NOT] DISTINCT FROM. Эта новая функция может помочь в случае, когда приходится сравнивать NULL-значения.

Сравнение NULL-значения с другим значением будет возвращать NULL. Это подобно умножению чего-нибудь на 0. IS [NOT] DISTINCT FROM гарантирует получение true или false в предположении, что NULL есть "что-то".

Давайте посмотрим [NOT] DISTINCT FROM в действии на примере.

Продолжить чтение "Как вы можете использовать IS [NOT] DISTINCT FROM"
Категории: T-SQL

Давайте поговорим о схеме базы данных

Пересказ статьи Adron. Let’s Talk About Database Schema


Серьезно, давайте поговорим о схеме абстрактно и о буквальной схеме, реализованной в некоторых из самых популярных систем баз данных.

Что такое схема?


В целом, в стороне от специфических реализаций в реляционных базах данных, "схема" - это концептуальная основа или проект, который определяет структуру, связи и ограничения данных или информации. Она предоставляет способ описания и организации данных в структурированном виде. Такое понятие схемы не уникально для баз данных; например, в GraphQL схема определяет типы, запросы, мутации и связи между ними, ограничивая набор возможных операций, которые могут выполняться с использованием API, и форму возвращаемых данных. Продолжить чтение "Давайте поговорим о схеме базы данных"

Как поменять владельца базы данных SQL Server

Пересказ статьи Nisarg Upadhyay. How to Change the SQL Server Database Owner


В SQL Server с каждой базой данных связан владелец (owner), который является принципалом, имеющим определенные разрешения и контроль над базой данных. Владелец базы данных - это пользователь или логин, которому предоставлена пользовательская роль dbo (database owner) на эту базу данных. Владелец базы данных имеет наивысший уровень разрешений в пределах базы данных и может выполнять административные задачи, такие как создание или модификация объектов, управление безопасностью и изменение схемы базы данных.
Продолжить чтение "Как поменять владельца базы данных SQL Server"
Категории: T-SQL

Упорядоченные поколоночные индексы в SQL Server 2022

Пересказ статьи Edward Pollack. Ordered Columnstore Indexes in SQL Server 2022


Одним из наиболее сложных технических моментов поколоночных индексов, который постоянно привлекает внимание, является необходимость упорядочивания данных для устранения сегментации. В некластеризованном поколоночном индексе порядок данных устанавливается автоматически на основе построчного порядка базовых данных. Однако в кластеризованном поколоночном индексе порядок данных не навязывается каким-либо процессом SQL Server. Это управление порядком данных остается на наше усмотрение, что может не оказаться (или оказаться) легкой задачей.

Чтобы помочь с этой проблемой, в SQL Server 2022 была добавлена возможность указывать предложение ORDER при создании или перестройке индекса. Эта функция приводит к автоматической сортировке данных SQL Server в рамках процессов вставки или перестройки. В этой статье подробно рассматривается эта функция, уделяя внимание ее использованию и ограничениям.
Продолжить чтение "Упорядоченные поколоночные индексы в SQL Server 2022"

Табличнозначные параметры в SQL Server

Пересказ статьи Henrique Siebert Domareski. Table-Valued Parameters in SQL Server


Табличнозначные параметры подобны массивам параметров, которые могут использоваться для передачи множества строк данных в оператор Transact-SQL, хранимую процедуру или функцию без необходимости создавать временную таблицу или использовать множество параметров. В этой статье демонстрируется использование табличнозначного параметра в хранимой процедуре Microsoft SQL Server.
Продолжить чтение "Табличнозначные параметры в SQL Server"
Категории: T-SQL

Статистика для улучшения производительности: сравнение SQL Server и Oracle

Пересказ статьи Pablo Echeverria. SQL Server vs Oracle Query Statistics to Improve Performance


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

В этой статье мы увидим, как определить, какие планы выполнения находятся в кэше и их накопленную статистику, сколько раз они были выполнены, и какое число различных планов выполнения имеется.
Продолжить чтение "Статистика для улучшения производительности: сравнение SQL Server и Oracle"