[英]Should I include all of my columns from the select in my index?
我有一個查詢,需要一些運行它看起來像這樣。
Select a.ColumnA,a.ColumnB,a.ColumnC,a.CoulmnD,a.columnE,...b.ColumnH
from Table A a
inner join Table B b
on a.columnB = b.ColumnB
Where a.columnA = @VariableA
現在,它在表A上有一個聚集索引
Clustered Index on ColumnA
它在表A上也有這樣的非聚集索引
NonClustered Index on (ColumnA,ColumnB) include (ColumnC,ColumnD)
我應該將ColumnsE-G添加到索引中嗎?
當您在執行計划中看到索引掃描而不是預期的搜索時,驗證比較列和參數的數據類型是否相同。
當數據類型不同時,SQL Server必須首先將具有較低優先級的操作數轉換為較高優先級數據類型(例如varchar
to nvarchar
)。 如果是必須轉換的列值,則轉換會阻止對列的索引進行有效使用,因為必須先轉換每行的列值,然后才能進行比較。 這被稱為非sargable表達式,並阻止更有效的索引搜索 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.