#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