2017-10-13 89 views
0

我在MS SQL中有兩列相當大的表(超過一億行)的索引。 我需要一個包含這兩列的索引,再加上第三個索引來提高不同查詢的性能。修改現有的索引或添加一個新的索引

我應該修改現有的索引以包括所有三列還是創建一個全新的列?

回答

0

我應該修改現有的索引以包含所有三列還是創建一個全新的列?

這取決於您查詢表的方式。

假設你有以下指標..

create index nci on tablea(Col1,col2) 

下面的查詢將satsify下面的查詢索引

select * from table1 where col1=1 and col2>10 
select * from table1 where col1=1 and col2=10 

不會滿足上述指標

select col1,col2 from table1 where col1>40 and col2=40 

所以第二欄是沒有用的,如果您在第一列使用除平等以外的任何比較。如果添加第三列,同樣適用ñ

總之,您可以添加第三列,如果您需要查詢被覆蓋,並且還他們落入上述樣品類別(在第一列平等)..

+1

>>>選擇COL1,從表1 COL2其中col1> 40和col2 = 40因此,如果在第一列上使用除了相等之外的任何比較,那麼第二列是沒有用的。<<<那是不正確的。該查詢僅返回col1,col2。原始表格可以有100列。因此,(Col1,col2)上的索引將用於(索引掃描),因爲它覆蓋了最窄的 – sepupic

+0

我假設create table語句中的「tablea」,查詢中的table1是同一個表,它是一個錯字? – SEarle1986

+0

我的意思是說第一列的不平等會導致殘留謂詞@sepupic – TheGameiswar