在列组上创建索引或为每列创建单独的索引,哪个更好?

时间:2011-02-25 06:03:23

标签: sql-server indexing

我已使用数据库引擎优化顾问分别为多个查询生成索引建议。在这样做后,我得到了每个查询的单独建议。因此,我注意到一个建议中使用的列用于另一个,因为查询依赖于同一个表。

在一起运行多个查询后,我可以创建一个有效的建议吗?

2 个答案:

答案 0 :(得分:1)

是。建议您通过数据库引擎优化顾问程序运行整个工作负载。看到类似的问题:Indexing by Database engine tuning advisor

答案 1 :(得分:1)

这取决于 - 更少,但更广泛的索引通常更好 - 如果您的查询实际上确实使用了宽索引中的那些列!

如果您有五个查询,并且每个查询在WHERE子句中使用不同的列,那么单个宽索引将没有多大帮助。

但是如果你的查询都使用了一些或相同的列(两列,三列),那么这三列上的单个宽索引就更好用了。

但要注意:索引中列的顺序很重要!

如果您在(col1, col2, col3)上创建索引,则可以帮助处理WHERE col1 = value1WHERE col1 = value1 AND col2 = value2条件的查询。

但它不能用于具有WHERE子句的查询,如WHERE col3 = value3