Как стать автором
Обновить

MS SQL 2022 killer feature

Время на прочтение 2 мин
Количество просмотров 8.2K

В совсем раннем превью MS SQL в январе мне вежливо отказали. И вот, наконец вышел публичный evaluation релиз! Давайте посмотрим, как MS SQL отнесется к самому неприятному - values with irregular selectivity. У меня про это даже была статья.

Загрузка MS SQL 2022 доступна по этой ссылке.

Однако вам придется преодолеть сложность "no such country":

Там еще есть запрос телефона, который должен соответсвовать стране (кода +7 нет, разумеется), и есть проверка на geoIP, так что любую страну указать не получится.

Но я уверен, вы выкрутитесь из этой ситуации и увидите вожделенное:

Microsoft SQL Server 2022 (CTP2.0) - 16.0.600.9 (X64) May 20 2022 13:29:42 Copyright (C) 2022 Microsoft Corporation Enterprise Evaluation Edition (64-bit) on Windows 10 Enterprise 10.0 (Build 19044: ) (Hypervisor)

Пойдем по предыдущей статье. Создадим базу, а в ней - тестовый пример:

create table Unlucky (
  n int identity primary key, 
  VAL varchar(32), 
  somethingElse varchar(128))
GO
set nocount on
declare @n int=1000000
while @n>0 begin 
  set @n=@n-1 
  insert into Unlucky select convert(varchar,@n/10)+'val',
    convert(varchar,@n)+convert(varchar,@n)
    +convert(varchar,@n)+convert(varchar,@n)
  end
GO
update Unlucky set VAL='n/a' where n%2=1
GO
create index VAL on Unlucky (val)
GO
create procedure GetVal @val varchar(32) as 
  select * from Unlucky where val=@val
GO

В табличке миллион записей, но половина имеет val='n/a', для остальных записей у нас 5 записей на значение:

Теперь момент истины: как отнесется SQL к таким вызовам:

exec GetVal 'n/a'
exec GetVal '99995val'

А вот это интересно! Вначале я подумал, что под 'MULTIPLE PLAN' скрывается невозможность старой Management Studio показать разные варианты - она это еще не умеет. Но SET SHOPWPLAN тоже не смог показать ничего дельного, хотя там ответ в текстовом виде приходит от MS SQL.

Чтобы увидеть execution plan, надо смотреть actual execution plan after execution:

Обратите внимание на QueryVariantID. И во втором случае:

Та-дааам! Ну что я могу сказать, как же долго я это ждал! Это не маркетинговый BS или бесполезные фичи, это маленький шаг для базы, но огромный шаг для всего человечества. Кто еще такое умеет? Никто.

Ради интереса залезем в activity monitor:

Execution plan (по right click) там обычный.

Возможность увидеть все Query Variants я не нашел (пока не реализовано?) но это было бы очень интересно и полезно.

Теги:
Хабы:
+5
Комментарии 10
Комментарии Комментарии 10

Публикации

Истории

Работа

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн