Пересказ статьи Andy Brownsword. Mixing Grouping and Window Functions
Можем ли мы группировать данные, когда применяются оконные функции, в одном и том же запросе?
Будем использовать в качестве примера те же данные, которые использовались нами неделю назад. Они содержат значения продаж, разбитые по периодам и содержащие также квартал и год:
Продолжить чтение "Сочетание группировки с оконными функциями"
Пересказ статьи 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 на символьный тип данных?"
Я решил написать короткую статью по этому поводу. Это простой способ, который не претендует на то, чтобы годиться для всех ситуаций. Я напишу о некоторых исключениях в отдельной статье.
Продолжить чтение "Изменение типа данных первичного ключа"
Пересказ статьи 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"
Пересказ статьи 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.
Продолжить чтение "Генерация тестовых данных с помощью встроенных возможностей базы данных"
Пересказ статьи Daniel Calbimonte. SQL Server and Python Tutorial
Введение
В этой статье мы рассмотрим подключение к SQL Server в Python с помощью библиотеки pyodbc. Если вы являетесь администратором базы данных SQL, то мы настоятельно рекомендуем
выполнение скриптов Python в SSMS.
Однако некоторые Python-разработчики предпочитают работать непосредственно с Python, а не в SSMS с включением скриптов. Мы рассмотрим следующие темы:
Продолжить чтение "Учебник по SQL Server и Python"
Пересказ статьи 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"
Пересказ статьи Prakash K. Batch Execution Mode on a Rowstore in SQL Server 2022
Пакетный режим выполнения является новым механизмом оптимизации в SQL Server. В этой статье рассматривается работа режима пакетного выполнения и то, как его использовать для более быстрого получения результатов запроса к данным при построчном хранении. Мы обсудим ограничения и предварительные настройки для включения режима пакетного выполнения и продемонстрируем его на примере.
Продолжить чтение "Пакетный режим выполнения при построчном хранении в SQL Server 2022"
Пересказ статьи Mehdi Ghapanvari. Improve Query Performance when SQL Server Ignores Nonclustered Index
Несмотря на наши усилия, направленные на оптимизацию запроса посредством создания некластеризованного индекса, SQL Server, видимо, отдает приоритет сканированию кластеризованного индекса, а не поиску в некластеризованном индексе с последующим поиском ключа. Удивительно, что сканирование кластеризованного индекса оказывается более эффективным для SQL Server в данной конкретной ситуации. Но можем ли мы все же найти способ для улучшения производительности запроса?
Продолжить чтение "Улучшить производительность запроса, когда SQL Server игнорирует некластеризованный индекс"
Пересказ статьи Aaron Bertrand. Don’t use DISTINCT as a “join-fixer”
Я спокойно решал проблемы производительности, переписывая медленные запросы, чтобы избежать использования DISTINCT. Зачастую DISTINCT служит лишь для того, чтобы "исправить join", и я могу объяснить что это означает на примере.
Продолжить чтение "Не используйте DISTINCT в качестве "исправления join""
Пересказ статьи Aaron Bertrand. Reasons for SQL Server Query Performance Fluctuations
Производительность запроса может испытывать скачки с течением времени, и это не обязательно обусловлено изменениями в самом запросе (или в коде приложения, которое его вызывает). Пользователи часто спрашивают, почему запрос внезапно стал работать медленнее, хотя они ничего не меняли в приложении, а данные не изменялись резко. В этой статье мы укажем на несколько причин - их существует много - по которым запрос мог замедлиться сегодня по сравнению с тем, что было 10 минут назад, две недели назад, или прошлым летом.
Прежде чем вникать в возможные причины скачков производительности, давайте сделаем обзор того, что происходит в SQL Server при обработке запросов.
Продолжить чтение "Причины скачков производительности запроса в SQL Server"
Пересказ статьи 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, затем покажу вам как это работает на нескольких примерах, включая тот, который иллюстрирует урок, который я при этом получил, и сопровожу его некоторыми замечаниями о том, почему эта мелочь в восстановлении может однажды избавить вас от плохого настроения.
Продолжить чтение "Восстановление в режиме ожидания; обзор и выученный урок"
Пересказ статьи 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]
Продолжить чтение "Различные способы преобразования целого значения в строку"