簡體   English   中英

我應該在索引中包含select中的所有列嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM