?
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语句执行计划进行分析
?
? ? ? ?复合索引的优点: