【发布时间】:2019-06-06 11:50:04
【问题描述】:
我有大量查询,我在三个列上的两个表之间进行连接:col1、col2 和 col3。所以我在两个表中的这三列上创建了一个非聚集索引。但是我有同样大量的查询,我只在两列上的两个表之间进行连接:col1 和 col2。 那么你的效率更高(撇开索引的大小)?
在两个表中的 col1 和 col2 上创建第二个非聚集索引,或者这两个索引之一是否足以处理工作?如果是的话,是哪一个? 提前感谢您的帮助
【问题讨论】:
-
不可能这样回答。这取决于色谱柱的选择性。多个索引意味着多个 IO 操作。查询优化器将选择看起来成本更低的任何东西。如果 col1 和 col2 具有更好的选择性并且首先出现在 3 列索引中,则优化器可能会选择它。这取决于表模式和实际数据统计
-
无论如何这最适合 dba.stackexchange.com,而不是 SO
-
在 dba.stackexchange.com Should I use many single field indexes, instead of specific multi column indexes? 中重复查询,答案非常
-
别忘了,“高效”需要考虑到索引对
insert/update/delete/merge语句施加的额外处理。如果经常编写表格,这可能会产生重大影响。
标签: sql-server tsql