我有疑问:
SELECT
M_nvarchar_3
, MA_nvarchar_40
, W_nvarchar_4
, LB_nvarchar_2
, SUM(ST_decimal_13_3)
, SUM(CW_decimal_13_3)
, SUM(STO_decimal_13_3)
, MAX(GJ_nvarchar_7)
FROM [dbo].[MES]
WHERE L2 = ''
GROUP BY M_nvarchar_3
, MA_nvarchar_40
, W_nvarchar_4
, LB_nvarchar_2;
Run Code Online (Sandbox Code Playgroud)
我创建了NONCLUSTERED FILTERED INDEX这样的:
CREATE NONCLUSTERED INDEX IX_M_nvarchar_3_MA_nvarchar_40_W_nvarchar_4_LB_nvarchar_2
ON [dbo].[MES]
(
M_nvarchar_3 ASC
, MA_nvarchar_40 ASC
, W_nvarchar_4 ASC
, LB_nvarchar_2 ASC
)
INCLUDE
(
ST_decimal_13_3
,CW_decimal_13_3
, STO_decimal_13_3
, GJ_nvarchar_7
)
WHERE L2 = '';
Run Code Online (Sandbox Code Playgroud)
并在上面的查询中有NONCLUSTERED INDEX SCAN。我想在这种情况下得到了NONCLUSTERED INDEX SEEK。你能给点建议吗?
从分区表中获取有序数据的最有效方法是什么?
我有这样的疑问:
SELECT TOP (4000)
*
FROM dbo.MS
ORDER BY MANDT
, MBLNR
, MJAHR
, ZEILE
Run Code Online (Sandbox Code Playgroud)
表按 MBLNR 分区。
执行计划:https://www.brentozar.com/pastetheplan/? id=Bkhv5g5EF
是否有任何选项可以从执行计划中删除排序?
建表语句:
CREATE TABLE [dbo].[MS]
(
[MANDT] [NVARCHAR](3) NOT NULL
, [MBLNR] [NVARCHAR](10) NOT NULL
, [MJAHR] [NVARCHAR](4) NOT NULL
, [ZEILE] [NVARCHAR](4) NOT NULL
, [LINE_ID] [NVARCHAR](6) NOT NULL
, [PARENT_ID] [NVARCHAR](6) NOT NULL
, [LINE_DEPTH] [NVARCHAR](2) NOT NULL
, [MAA_URZEI] [NVARCHAR](4) NOT NULL
, [BWART] [NVARCHAR](3) NOT NULL
, [XAUTO] [NVARCHAR](1) NOT NULL
, [MATNR] …Run Code Online (Sandbox Code Playgroud)