我能请教下:
1.执行计划里面的索引提示是基于什么策略产生的?
2.现在的SQL SERVER, 适配WHERE后面的条件(比如说用and),是不是 倒着 建立索引也可以(比如说 WHERE A_COL=1 AND B_COL =2 AND C_COL=3 ,建索引可以 C_COL ,B_COL, A_COL这样建?)
- SELECT TOP (1000) *
FROM [AdventureWorksDW2016_EXT].[dbo].[FactResellerSalesXL_PageCompressed]
WHERE [CustomerPONumber]='PO2137085' AND [Freight] = 16.3841查看实际执行计划,提示缺少的索引是:
- CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>] ON [dbo].[FactResellerSalesXL_PageCompressed] ([Freight],[CustomerPONumber]) 。。。。 这里给的缺少索引列 提示的是 Freight ,CustomerPONumber,是不是可以认为是 [Freight]的选择性可能更好一些(实际情况也是这样),所以放在前置列了 和使用 CustomerPONumber,Freight 建立索引,我怎么看出他们在效率上区别?(查询计划或统计信息里面 可以体现出来吗?)
- 我建索引的时候,那个次序在后面,他就用那个?比如: CREATE NONCLUSTERED INDEX idx_FactResellerSalesXL_PageCompressed_Freight_CustomerPONumber ON [dbo].[FactResellerSalesXL_PageCompressed] ([Freight],[CustomerPONumber]) CREATE NONCLUSTERED INDEX idx_FactResellerSalesXL_PageCompressed_CustomerPONumber_Freight ON [dbo].[FactResellerSalesXL_PageCompressed] ([CustomerPONumber],[Freight]) 这样次序建立,他就用 idx_FactResellerSalesXL_PageCompressed_CustomerPONumber_Freight 这个索引,如果前后次序颠倒下,他就用idx_FactResellerSalesXL_PageCompressed_Freight_CustomerPONumber 。。。 是不是在SQL SERVER看来2个效率完全一样?