Адаптивная обработка запросов в SQL Server 2017

Пересказ статьи Роберта Шелдона Adaptive Query Processing in SQL Server 2017 До версии SQL Server 2017, если план запроса содержал некорректную оценку кардинального числа (число обрабатываемых строк), ядро базы данных продолжало использовать этот план при каждом выполнении оператора, пока этот план сохранялся в кэше, что часто приводило к падению производительности. Например, план выполнения мог зарезервировать …

Использование индексов

Индекс создается командой create index и непосредственно недоступен пользователю. Индексы используются оптимизатором запросов для доступа к данным в базовых таблицах и представлениях. Индексы бывают двух видов — кластеризованные и некластеризованные. Некластеризованный индекс — это вспомогательная таблица, которая содержит данные столбца/столбцов (ключ индекса), по которым индексируется базовая таблица и указатель (RID) на данные в таблице, соответствующие …

Как думать подобно SQL Server: включенные столбцы не бесплатны

Пересказ статьи Brent Ozar. How to Think Like the SQL Server Engine: Included Columns Aren’t Free. В нашей последней статье я говорил, что если мы выполним запрос: UPDATE dbo.Users SET Age = Age + 1 WHERE Id = 643; при наличии индекса: CREATE INDEX IX_LastAccessDate_Id_DisplayName_Age ON dbo.Users(LastAccessDate, Id, DisplayName, Age); то должны были проделать следующее: …

Как думать подобно SQL Server: делать столбцы ключевыми или включенными в индекс?

Пересказ статьи Brent Ozar. How to Think Like the SQL Server Engine: Should Columns Go In the Key or the Includes? В последней статье я предлагал вам создать любой из двух следующих индексов:

Как думать подобно SQL Server: создание более широких индексов для борьбы с плохим T-SQL

Пересказ статьи Brent Ozar. How to Think Like the SQL Server Engine: Building Wider Indexes to Deal with Bad T-SQL В последней статье мы столкнулись с проблемой при выполнении этих двух запросов: SELECT LastAccessDate, Id, DisplayName, Age FROM dbo.Users WHERE LastAccessDate BETWEEN ‘2018-08-31’ AND ‘2018-09-01’ ORDER BY LastAccessDate;   SELECT LastAccessDate, Id, DisplayName, Age FROM …

Новости за неделю
2020-03-14 — 2020-03-20

§ Популярные темы недели на форуме Топик Сообщений 58 (Learn) 8 32 (Learn) 5 8 (Learn) 4 17 (Learn) 4 88 (SELECT) 4 § Авторы недели на форуме Автор Сообщений djvov001 9 Kursist 9 n0fr1 6 vasilyvanc 4 SergeyTsch 3 § Изменения среди лидеров Рейтинг Участник (решенные задачи) 35 vasilyvanc (150) 37 labuch_fedev (262) 55 Пусев_Денис (164, 233) § Претенденты на попадание в TOP 100 Рейтинг Участник (решенные задачи, …

Как думать подобно SQL Server: когда статистика не помогает

Пересказ статьи Brent Ozar. How to Think Like the SQL Server Engine: When Statistics Don’t Help В предыдущей статье мы видели, как SQL Server оценивает число строк, используя статистику. Давайте напишем две слегка отличающихся версии нашего запроса — на этот раз для поиска пользователей за один день — и посмотрим, какие будут даны оценки:

Как думать подобно SQL Server: использование статистики для построения планов запроса

Пересказ статьи Brent Ozar. How to Think Like the SQL Server Engine: Using Statistics to Build Query Plans В последнем случае SQL Server выбирал между поиском по индексу и сканированием таблицы, балансируя вокруг точки перехода, чтобы выяснить, какой из вариантов будет более эффективным для выполнения запроса.

Новости за неделю
2020-03-07 — 2020-03-13

§ Популярные темы недели на форуме Топик Сообщений 17 (Learn) 7 87 (SELECT) 6 199 (SELECT) 6 23 (SELECT) 5 88 (SELECT) 5 § Авторы недели на форуме Автор Сообщений vasilyvanc 11 Kursist 10 Зубрёнок 10 SergeyTsch 6 selber 6 § Изменения среди лидеров Рейтинг Участник (решенные задачи) 38 vasilyvanc (180, 199) 58 Пусев_Денис (173, 228) § Претенденты на попадание в TOP 100 Рейтинг Участник (решенные задачи, …

Как думать подобно SQL Server: что такое точка перехода?

Пересказ статьи Brent Ozar. How to Think Like the SQL Server Engine: What’s the Tipping Point? В последней статье я добавил в наш запрос DisplayName и Age — два столбца, которых не было в нашем некластеризованном индексе: SELECT LastAccessDate, Id, DisplayName, Age FROM dbo.Users WHERE LastAccessDate > ‘2018-09-02 04:00’ ORDER BY LastAccessDate; В результате я …

Как думать подобно SQL Server: что такое поиск ключа?

Пересказ статьи Brent Ozar. How to Think Like the SQL Server Engine: What’s a Key Lookup? В паре наших последних статей мы использовали простой запрос для нахождения ИД тех, кто входил в систему с середины 2014 года: SELECT Id FROM dbo.Users WHERE LastAccessDate > ‘2014-07-01’ ORDER BY LastAccessDate; Но один лишь ИД не очень полезен. …