使用Mysql官方数据库sakila作示例
首先查看actor表内索引
有一个主键索引(聚簇索引)和一个last_name字段的二级索引
这里我是想走聚簇索引找出第一条id,当然这里是排好序的值肯定是最小值。但是实际搜索中发现查询了200行才查到,走的是二级索引。按理说走主键索引应该是一行就搜索到了。
加上ORDER BY之后成果走了主键索引并只查了一行。应该是给Mysql的提示不够。
加大行数也是一样的
如果是用二级索引查询 也是对的
但是当不是覆盖查询,优化器经过比较认为 直接全表查询比过二次索引性价比更高,于是采用了全表查询
因此在写Limite操作时,最好通过覆盖查询来优化。
对于LIMITE,Mysql优化器导致的有时候不走索引而是走全表查询
最新推荐文章于 2023-12-26 11:41:06 发布