Пересказ статьи Simon Liew. Optimize SQL LIKE Wildcard Searches
Полный поиск по шаблону (например, LIKE '%поисковая_фраза%') в Microsoft SQL Server может быть медленным и неэффективным, поскольку гарантируется сканирование всех строк в таблице. Имеются ли какие-нибудь варианты оптимизации запросов с оператором SQL LIKE?
Оптимизация независимого от регистра полного поиска по шаблону с начальным и конечным подстановочным знаком является проблемой в базах данных SQL - эти шаблоны LIKE не получают выгоды от индексирования. Здесь исследуются потенциальные варианты оптимизации такого поиска и проверяются распространенные заблуждения.
Continue reading "Оптимизация поиска при использовании SQL LIKE с подстановочными знаками"
Пересказ статьи Brent Ozar. How Many Indexes Is Too Many?
Давайте начнем с
базы данных Stack Overflow (будет работать версия любого размера), удалим все индексы на таблице Users и выполним DELETE:
SET STATISTICS IO ON;
GO
BEGIN TRAN
DELETE dbo.Users WHERE DisplayName = N'Brent Ozar';
Я использую SET STATISTICS IO ON, о чем мы говорили в статье
"Как думать подобно серверу SQL Server" для иллюстрации количества прочитанных данных, и я делаю это в транзакции, которую я могу периодически откатывать, каждый раз демонстрируя полученные эффекты. Вот действительный план выполнения:
Continue reading "Слишком много индексов — это сколько?"
Пересказ статьи rebecca@sqlfingers. 10 T-SQL One-Liners You'll Use Every Day
Каждый администратор баз данных держит в голове инструментарий готовых запросов. Некоторым потребовались годы, чтобы научиться. Некоторые были случайно обнаружены во время работы в 2 часа ночи. Сегодня я поделюсь 10-ю моими самыми любимыми короткими запросами T-SQL, теми, что копируешь, вставляешь и сразу чувствуешь себя гением. Некоторые из них - классические, некоторые - из недавнего пополнения, и все из них полезны. Ставьте закладку, я надеюсь, что вы сюда вернетесь.
1. Генерация числовой последовательности на лету
Нужно быстро получить последовательность чисел без создания таблицы подсчета? Если вы имеете SQL Server 2022 или более позднюю версию, GENERATE_SERIES - ваш новый лучший друг:
SELECT value FROM GENERATE_SERIES(1, 100);
Это все. Одна строка кода. 100 строк в последовательности. Никаких временных таблиц, никаких CTE, никаких перекрестных соединений. Аналогичный прием для диапазона дат. Используйте это для получения каждого дня 2025 года в одной строке:
SELECT DATEADD(DAY, value, '2025-01-01') AS dt FROM GENERATE_SERIES(0, 364);
Версия: SQL Server 2022+ (уровень совместимости 160+)
Continue reading "10 простых запросов на T-SQL, которые вы будете использовать каждый день"
Пересказ статьи Koen Verbeeck. JSON_CONTAINS Function in SQL Server 2025
У меня есть данные, пришедшие в мой SQL Server в формате JSON. Перед началом парсинга, который довольно интенсивный, необходимо проверить, присутствуют ли некоторые значения в этом JSON. Имеется ли функция, которую я могу использовать с этой целью? Давайте посмотрим, что может делать JSON_CONTAINS, новая функция в SQL Server 2025.
Формат файла JSON поддерживается в SQL Server, начиная с версии 2016, когда были введены функции
OPENJSON и
JSON_VALUE. Отличное введение в возможности SQL Server 2016 можно найти здесь:
Продвинутые методы JSON в SQL Server, часть 1,
часть 2 и
<часть 3/a>.
С каждый релизом добавляется новая функциональность для обработки данных JSON. Недавно в Azure SQL DB был реализован тип данных JSON, который теперь нашел свое применение в SQL Server 2025. Это последний предварительный релиз SQL Server на момент написания этой статьи. В отличие от многих других новых функций SQL Server, этот предварительный выпуск включает новую функциональность, которая доступна только в SQL Server 2025, но не в облачных аналогах, таких как база данных Azure SQL DB. Одной из этих новых функций является JSON_CONTAINS, которой и посвящена эта статья.
Continue reading "Функция JSON_CONTAINS в SQL Server 2025"