我有表GLTrans
,它有一个非聚集索引:
我的查询:
SELECT
_glAccount.[Code] as [AccountCode]
,_glTrans.[CommentBooking] as [CommentBooking]
FROM
[GLTransHeader] _this
INNER JOIN
[GLTrans] _glTrans ON _glTrans.[GLTransHeader_Id] = _this.[Id]
LEFT INNER JOIN
[GLAccount] _glAccount ON _glAccount.[Id] = _glTrans.[GLAccount_Id]
WHERE
_glTrans.Folder_Id = '3AFE5BC5-1CC7-4198-9D89-B65591624C6E'
如果我在Folder_Id
表中添加GLTrans
,则会显示查询。另一方面,查询是超时。
我的问题:
答案 0 :(得分:1)
Index ON (Col1, Col2)
与'Index ON(Col2,Col1)`
索引ON(Col1,Col2)对以下查询非常有用:
Select *
from YourTable
Where Col1 = ? and Col2 = ?
以及以下查询:
Select *
From YourTable
Where col1 = ?
但对此查询无效:
Select *
from YourTable
Where Col2 = ?
索引中列的优先级非常重要。
如果在select语句中选择列,如果你的索引中没有使用include,则可以使用include for index,sql server使用key lockup来获取数据。
例如,以下查询需要Index on (Col1, Col2) include(Col3)
。
Select Col3
from your table
where col1 = ? and col2 = ?