设定表数据量行数值为rows,表属性列选择值为unique_c
规则1、
表rows<=200,
情况一:只存在单表查询时不创建索引(主键除外)
情况二:存在与其他表联查时,创建索引
规则2、
表unique_c<20,不考虑在该列上创建索引
例如:status、flag、type、content等性质的属性列上不创建索引
规则3、
在unique_c/rows=1的属性列上创建唯一索引。
规则4、
where判断条件中or连接字段上创建 索引。
例如:
select * from tab1
where col1=’139’ or col2=56;
必须在col1属性列和col2属性列上都创建索引,否则该sql查询将走全表扫描。
规则5
在where中经常联合做判断条件的属性列,创建联合索引。
(1) 联合索引最多可包含3个属性列,但不能包含status、flag、sex性质的属性 列
(2) 联合索引中属性列顺序设置:经常访问的列或选择性较大的列应放在前面。
Sql语句中的where条件中引用了联合索引的全部列或自首列开始且连续的部分列,将有助于提高此查询的性能。
例如:
select * from tab2
where col1=12 and col2=56 and col4=’1’
select * from tab2
where col2=49
结合规则5(1),col4属于unique_c<20性质的列,不能在该列上创建索引以及联合索引
结合规则5(2),创建联合索引(col2,col1)。
规则6、
在频繁进行order by或group by的属性列上建立索引。
规则7、
在一个表上不能创建多于3个索引。