一、索引优化
1、合理使用索引,在经常查询而不经常增删改操作的字段加索引,一个表上的索引不应该
超过6个。
2、Order by与group by后应直接使用字段,而且字段应该是索引字段。
3、索引字段长度应较短而长度固定。
4、索引字段重复不能过多。
5、Hash索引与BTree索引区别。(MyISAM与InnoDB不支持Hash索引)
(1)、BTree索引使用多路搜索树的数据结构,可以减少定位的中间过程;综合效率较高,默认使用的索引。
(2)、Hash索引使用Hash算法构建索引;精确的等值查询一次定位,效率极高,但特别不适合范围查询;使用Hash的复合索引是把复合索引键共同计算hash值,故不能单独使用。
6、会导致引擎放弃使用索引,改为进行全表的几种情况,都要在开发中尽量避免出现。
(1)、where子句中使用like关键字时,前置百分号会导致索引失效(起始字符不确定都会失效)。如:select id from test where name like “%mike”。
(2)、where子句中使用is null或is not null时,因为null值会被自动从索引中排除,索引一般不会建立在有空值的列上。
(3)、where子句中使用or关键字时,or左右字段如果存在一个没有索引,有索引字段也会失效;而且即使都有索引,因为二者的索引存储顺序并不一致,效率还不如顺序全表扫描,这时引擎有可能放弃使用索引,所