索引:主键索引,唯一索引,组合索引,全文索引等
SQL优化步骤
首先定位慢查询(MQSQL默认是响应超过十秒钟的才是慢查询)
定位到了慢查询才根据语句看采用什么调优方式
索引的实现原理其实就是二叉树(B+树)
主键索引:
当我们在习惯性的生成primiry key的时候,就是生成了主键索引,采用二叉树的形式进行生成,效率非常高。
唯一索引:
唯一索引其实就是单独某一列索引,主键索引可以看作是唯一索引中的一种
组合索引:
create index idx_detp on table_name(col1,col2)可以建立索引
组合索引就是利用两个字段建立索引,个人理解为key-value的形式,在使用语句查找的时候,必须加上col1才能使用索引进行查找,单单只查找col2实际上是不会使用索引进行查找的
全文索引
全文索引默认是不支持中文检索的,一般全文索引采用搜索框架进行, Lucence和Solr就是两大搜索框架。
可以使用show index from table_name查看当前表的索引有哪些
适合建立索引的场景:
由于索引是需要消耗硬盘资源,频繁的增删改操作是会让索引重构的,不是所以的情况都适合建索引,也不是建了索引都会提高效率
1:出现慢查询并且找到SQL语句
2:不是经常更新的数据
3:数据量特别大,建了索引过后比没建索引效率高
4:索引应该建立在经常查询的字段上
注意
在使用过程中如果采用百分号(%)进行匹配,将不会触发索引
在使用过程中如果或者(or)进行匹配,将不会触发索引