索引设计的一些原则
2017-03-19 21:53
309 查看
1.分区表不要创建全局索引
分区表一般创建本地索引(使用local关键字)。删除分区时全局索引失效。
2.不要创建无用索引
会降低DML语句的性能。
3.不要创建同样功能的索引
比如:如果已经建立了(colName1,colName2)索引,那么没必要再创建index1索引
4.索引的key不宜过长
key过长会导致索引树高度很大,效率降低。
组合索引的列不宜过多。
5.组合索引要把高选择度的列放在前面
6.当需要对大数据量数据有序返回时,可以通过创建索引来避免大量排序
如需按colName1排序,那么建立colName1的索引;
如要返回在colName1="xxx"的数据并且按照colName2排序,那么建立(colName1,colName2)组合索引
7.一般不再选择率低的列上创建索引
8.如果需要对查询列上采用函数查询,那么创建函数索引。
MySQL不支持函数索引。括弧,MySQL也不支持采用“暗示”来选择特定索引类型~~~
9.索引和表一般要创建在不同的表空间中,以提高IO性能。
10.因为索引不会在空值上生效,所以如果某列有空值且希望建立索引,那么可以考虑建立组合索引(colName, 1)
分区表一般创建本地索引(使用local关键字)。删除分区时全局索引失效。
2.不要创建无用索引
会降低DML语句的性能。
3.不要创建同样功能的索引
比如:如果已经建立了(colName1,colName2)索引,那么没必要再创建index1索引
4.索引的key不宜过长
key过长会导致索引树高度很大,效率降低。
组合索引的列不宜过多。
5.组合索引要把高选择度的列放在前面
6.当需要对大数据量数据有序返回时,可以通过创建索引来避免大量排序
如需按colName1排序,那么建立colName1的索引;
如要返回在colName1="xxx"的数据并且按照colName2排序,那么建立(colName1,colName2)组合索引
7.一般不再选择率低的列上创建索引
8.如果需要对查询列上采用函数查询,那么创建函数索引。
MySQL不支持函数索引。括弧,MySQL也不支持采用“暗示”来选择特定索引类型~~~
9.索引和表一般要创建在不同的表空间中,以提高IO性能。
10.因为索引不会在空值上生效,所以如果某列有空值且希望建立索引,那么可以考虑建立组合索引(colName, 1)