mysql索引的一些总结

执行成本(执行时间)
1. IO 成本: 即从磁盘把数据加载到内存的成本,默认情况下,读取数据页的 IO 成本是 1,MySQL 是以页的形式读取数据的,即当用到某个数据时,并不会只读取这个数据,而会把这个数据相邻的数据也一起读到内存中,这就是有名的程序局部性原理,所以 MySQL 每次会读取一整页,一页的成本就是 1。所以 IO 的成本主要和页的大小有关
2. cpu成本:进行一些其他条件的过滤以及排序等,这个成本跟返回的行数有关系

索引使用不到的情况
1. 数据表的数据量比较小,不如全表扫描
2. 没有创建索引
3. 索引使用不规范,比较常见的复合索引的左匹配规则,不等于符号的使用,索引列的隐式转化(字符串类型不加单引号),索引列做计算
4. mysql优化器执行计划的选择错误,这个选择的标准是估值,会有一定的误差性(or操作有时候就会造成这种问题)

不适合索引的情况
1. 唯一性较差的字段
2. 更新频繁的字段
3. where,order.group后面没有出现的字段尽量不要创建索引,减少索引的数量

一些索引优化
1. 对于索引字段较多的表,删除一些不必要额索引或者使用联合索引合并一些索引字段
2. 使用覆盖索引,减少一次回表
3. 使用explain, optimizer trace查看sql的执行计划,避免一些因为mysql自身优化器的原因没有使用到索引,这是可以强制使用索引
4. 索引使用不到的情况的检查

posted @ 2020-08-27 11:18  梅西西西西西西  阅读(153)  评论(0)    收藏  举报