Skip to content

Более эффективный подсчет

Пересказ статьи Aaron Bertrand. Counting more efficiently


Почти десятилетие назад я написал статью с названием «Вредные привычки: трудный подсчет строк». В той статье я говорил о том, как мы можем использовать метаданные для мгновенного получения числа строк в таблице. Обычно люди делают следующее, что приводит к чтению всей таблицы или индекса:

DECLARE @c int = (SELECT COUNT(*) FROM dbo.TableName);

Чтобы в значительной степени избежать ограничений на размер данных, вместо этого мы можем использовать sys.partitions. Continue reading "Более эффективный подсчет"

Планирование планов. Часть 26 - окна с диапазонной рамкой

Пересказ статьи Hugo Kornelis. Plansplaining part 26 – Windows with a ranged frame


Это двадцать шестая часть данной серии (plansplaining). И уже четвертый эпизод об оконных функциях. Первая из этих статей была посвящена базовым оконным функциям; вторая была посвящена быстрой оптимизации накопительных агрегатов, а в третьей публикации объяснялось, как оптимизатор работает при отсутствии поддержки плана выполнения для UNBOUNDED FOLLOWING.
Continue reading "Планирование планов. Часть 26 - окна с диапазонной рамкой"

Искусство хранимой процедуры SQL Server: типы данных

Пересказ статьи Erik Darling. The Art Of The SQL Server Stored Procedure: Data Types


Смесь и соответствие


Есть лишь несколько типов данных, которые нервируют меня, когда я их вижу:

    Строки MAX или близкие к верхнему пределу по байтам (за исключением динамического SQL)
    XML
    sql_variant

Не важно, являются ли они параметрами хранимой процедуры или объявляются в локальных переменных. Когда они появляются, я ожидаю следом чего-то плохого.
Continue reading "Искусство хранимой процедуры SQL Server: типы данных"

Обзор инструментов мониторинга для SQL Server

Пересказ статьи Hadi Fadlallah. An overview of SQL Server monitoring tools


Мониторинг базы данных: быстрое напоминание


Мониторинг баз данных - это множество инструментов и методов, используемых для создания и обслуживания инфраструктуры приложения, обладающих высокой доступностью и скоростью работы. Он помогает отслеживать потребление ресурсов, таких как число операций чтения и записи, потребление ЦП и RAM, размеры хранилища и временного хранилища и т.д. Потребление ресурсов может быть получено на точное время или непрерывно измеряться в реальном времени.


Continue reading "Обзор инструментов мониторинга для SQL Server"

Расширенное тестирование с помощью WAITFOR в клиентских инструментах SQL Server.

Пересказ статьи Aaron Bertrand. Advanced testing with WAITFOR in SQL Server client tools


WAITFOR - это очень полезная команда для предотвращения выполнения последующих операций до тех пор, пока не пройдет определенное время (WAITFOR DELAY) или пока не наступит конкретное время (WAITFOR TIME). Эти команды достаточно хорошо обсуждались (включая "за" и "против") в предыдущей статье.
Continue reading "Расширенное тестирование с помощью WAITFOR в клиентских инструментах SQL Server."

Как меняется порядок выполнения SQL в зависимости от СУБД

Пересказ статьи Tobi Sam. How SQL Execution Orders Varies Across Databases


Почему нельзя использовать GROUP BY <порядковые позиции> в SQL Server, но можно в других.


Continue reading "Как меняется порядок выполнения SQL в зависимости от СУБД"

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

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


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

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

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.
Continue reading "GROUP BY алиас - особенность Oracle, которая была бы замечательна в SQL Server"

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

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


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

Я решил написать короткую статью по этому поводу. Это простой способ, который не претендует на то, чтобы годиться для всех ситуаций. Я напишу о некоторых исключениях в отдельной статье.
Continue reading "Изменение типа данных первичного ключа"

Трехзначная логика 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” (неизвестно). Continue reading "Трехзначная логика T-SQL и установка ANSI_NULLS"

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

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


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

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

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

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


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

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

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

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


Введение


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

Однако некоторые Python-разработчики предпочитают работать непосредственно с Python, а не в SSMS с включением скриптов. Мы рассмотрим следующие темы: Continue reading "Учебник по 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).
Continue reading "Изменение местоположения по умолчанию файлов данных, журналов транзакций и резервных копий в SQL Server"

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

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


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

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