Не работает пакетный режим Sql Server 2019 для функции rowstore

#sql #sql-server #sql-server-2019

#sql #sql-сервер #sql-server-2019

Вопрос:

На моем локальном компьютере установлена версия для разработчиков sql server 2019, и я пытался использовать функцию «Пакетный режим в Rowstore», выполнив следующие действия https://www.sqlshack.com/query-tuning-with-sql-server-2019 / статья

Я выполнил следующие шаги

 ALTER DATABASE [datatbase name] SET COMPATIBILITY_LEVEL = 150;

ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_ON_ROWSTORE = ON;
 

Но все же план выполнения показывает «Фактический режим выполнения = строка» вместо пакета.

Ниже приведен пример запроса

 SET STATISTICS IO, TIME ON
GO

SELECT orderDetail_productID, SUM(orderDetail_price) SumUnitPrice, AVG(orderDetail_price) AvgUnitPrice,
SUM(orderDetail_Quantity) SumOrderQty, AVG(orderDetail_Quantity) AvgOrderQty
FROM [dbo].[tbl_orderDetail]
GROUP BY orderDetail_productID ORDER BY orderDetail_productID
GO

SET STATISTICS IO, TIME OFF
GO"
 

введите описание изображения здесь

Комментарии:

1. Не связано, но примечание: это действительно плохая привычка ставить префикс имени столбца с таблицей таблиц. Это означает, что у вас есть имена столбцов, подобные tbl_orderDetail.orderDetail_productID . Вы уже знаете, что он находится в таблице tbl_orderDetail , потому что, когда вы ссылаетесь на него, он поступает из указанной таблицы. orderDetail.productID было бы намного лучше, или даже псевдоним таблицы, как oD и тогда, это может быть oD.productID .

Ответ №1:

Вы можете использовать пакетный режим в rowstore в sql 2019 только в редакции разработчика и enterprise.

Как общие правила:

 -In the Query at least one table must have not less than 131072 rows
-Should be present at least an efficient batch operator (join, aggregate or window aggregate)
-At least one of the batch operators should have in input no fewer than 131072 rows.
 

взгляните на @ SQL Server 2019 и пакетный режим в Rowstore