Skip to content

Сочетание группировки с оконными функциями

Пересказ статьи Andy Brownsword. Mixing Grouping and Window Functions


Можем ли мы группировать данные, когда применяются оконные функции, в одном и том же запросе?

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

GROUP BY алиас - особенность Oracle, которая была бы замечательна в SQL Server

Пересказ статьи Aaron Bertrand. SQL GROUP BY Alias - An Oracle feature that would be great in SQL Server


Запросы с GROUP BY могут стать слишком путаными, если столбцом группировки является сложное выражение. В силу логического порядка обработки запроса вам часто приходится повторять такое выражение, поскольку его алиас не может быть использован в предложении GROUP BY.

Oracle недавно решил эту проблему в выпуске 23c, добавив возможность группировки GROUP BY алиас_столбца. Это такой простой, но мощный синтаксис, и я надеюсь, что SQL Server может последовать за Oracle.
Продолжить чтение "GROUP BY алиас - особенность Oracle, которая была бы замечательна в SQL Server"

Изменение типа данных первичного ключа

Пересказ статьи way0utwest. Changing the Data Type of a Primary Key


Недавно этот вопрос мне задал один клиент: "Как мне изменить числовой PK на символьный тип данных?"

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

Трехзначная логика T-SQL и установка ANSI_NULLS

Пересказ статьи Sergio Govoni. T-SQL three-valued logic and ANSI_NULLS setting!


Одной из моих любимых книг является T-SQL Querying от Itzik Ben-Gan, Dejan Sarka и Grega Jerkich; ее богатое содержание вдохновило меня на написание этой статьи о частном аспекте языка T-SQL: возможные значения, которые мы можем ожидать в T-SQL в результате логической оценки выражения.

Во многих языках программирования при оценке логического выражения ожидается получение только двух возможных значений. Выражение может быть TRUE или FALSE. В T-SQL логическое выражение дополнительно к значениям TRUE и FALSE может дать результат “UNKNOWN” (неизвестно). Продолжить чтение "Трехзначная логика T-SQL и установка ANSI_NULLS"
Категории: T-SQL

Настройка с использованием оконных функций

Пересказ статьи Rob Farley. Tuning Using Window Functions


Иногда настройка запроса предполагает рассмотрение различных подходов к решению проблемы. А учитывая, что другими вариантами настройки могут быть создание индексов или изменение структуры таблиц - которые вносят значительные и постоянные изменения среды - переписывание запроса может часто оказаться правильным решением.

Оконные функции довольно часто появляются при переписывании запросов, и пример, связанный с этим был бы уместен для четвергов T-SQL в этом месяце, проводимых Steve Jones(@way0utwest на X/Twitter).
Продолжить чтение "Настройка с использованием оконных функций"

Генерация тестовых данных с помощью встроенных возможностей базы данных

Пересказ статьи Denis Magda. Sample Data Generation With Built-In Database Capabilities


Имеется много способов генерации фиктивных данных для базы данных. Вы можете создать генератор данных, используя Mock-сервисы для тестирования, или получить подмножество собственных производственных данных. Помимо этого многие базы данных предлагают встроенные возможности для создания синтетических данных.

В этой статье вы узнаете, как использовать специальные функции базы данных, иерархические запросы и рекурсивные общие табличные выражения (CTE) для генерации тестового набора данных в PostgreSQL, MySQL, Oracle и SQL Server.
Продолжить чтение "Генерация тестовых данных с помощью встроенных возможностей базы данных"

Учебник по SQL Server и Python

Пересказ статьи Daniel Calbimonte. SQL Server and Python Tutorial


Введение


В этой статье мы рассмотрим подключение к SQL Server в Python с помощью библиотеки pyodbc. Если вы являетесь администратором базы данных SQL, то мы настоятельно рекомендуем выполнение скриптов Python в SSMS.

Однако некоторые Python-разработчики предпочитают работать непосредственно с Python, а не в SSMS с включением скриптов. Мы рассмотрим следующие темы: Продолжить чтение "Учебник по SQL Server и Python"

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

Пересказ статьи Nisarg Upadhyay. Change the default SQL Server locations for database data files, transaction log files and backup files


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

В этой статье мы рассмотрим три варианта сделать это. Отметим, что для всех трех вариантов потребуется перезапустить SQL Server, чтобы изменения вступили в силу. У меня есть доступ sysadmin на SQL Server, поэтому я решил применить самый безопасный вариант, который использует SQL Server Management Studio (SSMS).
Продолжить чтение "Изменение местоположения по умолчанию файлов данных, журналов транзакций и резервных копий в SQL Server"
Категории: T-SQL

Пакетный режим выполнения при построчном хранении в SQL Server 2022

Пересказ статьи Prakash K. Batch Execution Mode on a Rowstore in SQL Server 2022


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

Продолжить чтение "Пакетный режим выполнения при построчном хранении в SQL Server 2022"

Улучшить производительность запроса, когда SQL Server игнорирует некластеризованный индекс

Пересказ статьи Mehdi Ghapanvari. Improve Query Performance when SQL Server Ignores Nonclustered Index


Несмотря на наши усилия, направленные на оптимизацию запроса посредством создания некластеризованного индекса, SQL Server, видимо, отдает приоритет сканированию кластеризованного индекса, а не поиску в некластеризованном индексе с последующим поиском ключа. Удивительно, что сканирование кластеризованного индекса оказывается более эффективным для SQL Server в данной конкретной ситуации. Но можем ли мы все же найти способ для улучшения производительности запроса?
Продолжить чтение "Улучшить производительность запроса, когда SQL Server игнорирует некластеризованный индекс"

Не используйте 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