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]
索引
答案 0 :(得分:1)
你的第一个想法是正确的。查询:
SELECT a
FROM myTable
将能够有效地使用(a,b,c)
索引。无需添加(a)
索引。
关于这个索引是否应该聚集,这是另一个讨论。由于SQL-Server每个表只允许一个聚簇索引,因此应该明智地做出选择。请参阅MSDN文章:Clustered Index Design Guidelines和Creating Clustered Indexes。