1
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]索引

4

1 回答 1

1

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

SELECT a
FROM myTable

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


至于这个索引是否应该被聚集,那就是另外一回事了。由于 SQL-Server 只允许每个表有一个聚集索引,因此应该明智地做出选择。请参阅 MSDN 文章:聚集索引设计指南创建聚集索引

于 2012-04-20T06:32:12.460 回答