2011-08-04 35 views
2

什麼指標/指數會向你推薦可以在表上創建作出以下類型的查詢更高效:索引表中有更好的表現由查詢

SELECT MAX(val1) 
FROM table 
WHERE val2 = 'x' OR val3 = 'y' 

x和y是當然的變量。 val2和val3幾乎總是唯一的,可能會發生一些重複。

+0

嗯..上val2的索引,並在VAL3 – Randy

+1

你嘗試過什麼?最佳索引通常取決於表格大小等內容。您現在是否在查詢時遇到問題?你已經有桌子上的其他索引了嗎? –

+0

您還需要使用val1上的索引,以便快速找到MAX值。 – Johan

回答

4

val2 + val1val3 + val1 索引另一個寫像查詢:

SELECT MAX(val1) 
FROM (SELECT max(val1) FROM table where val2 = 'x' 
     UNION ALL 
     SELECT max(val1) FROM table val3 = 'y' 
    ) dt 
+0

這裏是一個額外的想法,因爲OP的去了'MAX',賺了指數:'VAL2 ASC + VAL1 DESC'另:'VAL3 ASC + VAL1 DESC'。我認爲將'val1 DESC'作爲索引的一部分會比僅將val1作爲索引中的包含列更好。我認爲'MAX'會優化索引是'DESC'。 –

+0

使用您的查詢與以下索引導致索引查找(您的索引提供索引掃描)。 CREATE INDEX ix_test3 ON dbo.table1(val2次) CREATE INDEX ix_test4 ON dbo.table1(VAL3) – rickythefox

相關問題