SQL查询中索引的影响
Posted
技术标签:
【中文标题】SQL查询中索引的影响【英文标题】:impact of index in SQL query 【发布时间】:2011-04-24 04:50:36 【问题描述】:假设一个表上有两个索引
-
col1,col2 上的 index1
col3 上的 index2
请告诉我,下面的案例索引是否有帮助?
.. where col1,col4
.. where col3,col4
.. where col1,col3
.. where col1,col2,col3,col4
*注意,
-
我只写了 where 子句而没有指定条件。仅提及使用的列
我正在使用 DB2。所以根据我的知识列顺序无关紧要。
col4 没有任何索引。
【问题讨论】:
【参考方案1】:where col1,col4
- 可以使用索引 1 中的前缀 col1
。
where col3,col4
- 可以使用索引 2。
where col1,col3
- 可以使用 index2 或索引 1 中的前缀 col1
。
where col1,col2,col3,col4
- 可以使用任一索引
【讨论】:
意思是,1.复合索引中的列可以独立使用吗? 2. where子句的所有coulns要么必须是索引,要么不能是索引,这不是真的。 @articlestack:只能使用前缀,不能使用任何列。【参考方案2】:where 子句中提到的列,如果被索引,那么这些索引将被使用。例如:- 在您的“Col1,col4”中,col1 被索引,因此将被使用。对于其他条件类似。对于两个索引都可用的列,则可以同时使用它们。例如:- 在您的第 3 和第 4 个 where 子句中。
【讨论】:
以上是关于SQL查询中索引的影响的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
SQL Server创建复合索引时,复合索引列顺序对查询的性能影响