1.索引概述
2.索引结构
3.索引分类
聚集索引选取规则:
- 如果存在主键,主键索引就是聚集索引。
- 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
- 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索 引。
4.索引语法
5.SQL性能分析
5.1.SQL执行频率
5.2.慢查询日志
5.3.profiles
5.4.explain
6.索引使用
6.1.最左前缀法则
6.2.索引失效情况
6.2.1.范围查询
6.2.2. 索引列运算
6.2.3.字符串不加引号
6.2.4. 模糊查询
如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。
6.2.5. or连接条件
用or分割开的条件, 如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。
6.2.6.数据分布影响
如果MySQL评估使用索引比全表更慢,则不使用索引。
6.3.SQL提示
6.4.覆盖索引
覆盖索引是指 查询使用了索引,并 且需要返回的列,在该索引中已经全部能够找到
尽量使用覆盖索引,减少select *
6.5.前缀索引
当字段类型为字符串(varchar,text,longtext等)时,有时候需要索引很长的字符串,这会让 索引变得很大,查询时,浪费大量的磁盘IO, 影响查询效率。此时可以只将字符串的一部分前缀,建 立索引,这样可以大大节约索引空间,从而提高索引效率。