2012-04-20 33 views
1
select a,b,max(c) from myTable 
where a>b 
group by a,b 

我的第一反應是打開一個聚集索引爲[A,B,C]將索引分配給列/ s?

和這裏的問題是:

假設某人正在運行的另一個簡單的選擇:

select a from myTable. 

[a]列將通過[a,b,c]索引搜索?或者它不會使用索引...? (我猜它使用[a,b,c]指數)

,但我想它不會是快,一個[a]指數...

所以我應該怎麼辦?

創建[a,b,c]指數 創建[a,b,c] + [a]指數

回答

1

你首先想到的是正確的。查詢:

SELECT a 
FROM myTable 

將能夠有效地使用(a,b,c)索引。無需添加(a)索引。


至於這個指數是否應該聚集在一起,這是一個其他的討論。由於SQL-Server每個表只允許一個聚簇索引,所以應該明智地做出選擇。請參閱MSDN文章:Clustered Index Design GuidelinesCreating Clustered Indexes