将索引分配给列/ s?

时间:2012-04-20 06:20:24

标签: sql-server sql-server-2008 indexing

select a,b,max(c) from myTable
where a>b
group by a,b

我的第一直觉是打开[a,b,c]

的聚集索引

以下是问题:

假设某人正在运行另一个简单的选择:

select a from myTable.

是否会在[a]索引中搜索[a,b,c]列?或者它根本不会使用索引......? (我猜它使用[a,b,c]索引)

但我想它不会像单个[a]索引一样快......

那我该怎么办?

创建[a,b,c]索引 创建[a,b,c] + [a]索引

1 个答案:

答案 0 :(得分:1)

你的第一个想法是正确的。查询:

SELECT a
FROM myTable

将能够有效地使用(a,b,c)索引。无需添加(a)索引。


关于这个索引是否应该聚集,这是另一个讨论。由于SQL-Server每个表只允许一个聚簇索引,因此应该明智地做出选择。请参阅MSDN文章:Clustered Index Design GuidelinesCreating Clustered Indexes