日期:2014-05-16  浏览次数:20365 次

oracle索引(4)——复合索引

?

4.复合索引

? ??在大多数情况下,复合索引比单字段索引号,因为可以过滤出更多数据,精确定位。但是要考虑实际情况,不能滥用,不能乱用。

? ??复合索引设计原则:

? ? 1、前缀性

? ? ? ? ?也就是说到底把那个字段放在第一个未知呢,这个至关重要

? ? ? ? ? 例如:(col1,col2,col3)这个索引包含三个字段

? ? ? ? ? ? ? ? ? ? ?SELECT?*?FROM?tab1?WHERE?col1='XX'

? ? ? ? ? ? ? ? ? ? ?SELECT?*?FROM?tab1?WHERE?col2='XX'?

? ? ? ? ? ? ? ? ? ? ?SELECT?*?FROM?tab1?WHERE?col3='XX'

? ? ? ? ? ? ? ? ? ? ?SELECT?*?FROM?tab1?WHERE?col1='XX'?AND?NAME='CCC'

? ? ? ? ? ? ? ? ? ? ?SELECT?*?FROM?tab1?WHERE?col2='XX'?AND?NAME='CCC'

?

? ? ? ? ? ? ? ? ? ? ?针对上面的几个SQL语句,到底谁会走索引,谁不走索引你。

? ? ? ? ? ? ? ? ? ? ?其实只要含有col1='SSSS'条件的语句都会走索引

? ? ? ? ? ? ? ? ? ? ? 这就是为什么第一个字段为什么这么重要的原因了

?

? ? ?2、可选性

? ? ? ? ? ?就是用于索引的字段的非重复数据必须多,像用性别来做索引字段就行不通。

? ? ? ? ? ?将字段可选性越多的字段放到前面

?

? ? ?复合索引使用建议:

? ? ? 1、分析SQL语句中约束条件字段

? ? ? 2、约束条件比较固定的,优先采用B*树复合索引

? ? ? 3、单个字段是主键、唯一键或则其他可选性很高的字段可以建立单字段索引,节省索引开销

? ? ? 4、在建立复合索引的时候,优先考虑其前缀性,其次是可选性

? ? ? 5、如果涉及到几个条件使用频繁,但是查询组合不固定,可以分别建立单字段索引

? ? ? 6、如果是多表连接,可以考虑在被驱动表的连接字段与该表的其他字段创建复合索引

? ? ? 7、通过查看SQL语句执行计划进行分析

?

? ? ? ?复合索引的优点: