MySQL中Innodb搜索引擎:索引和实际的数据都是存储在磁盘的,只不过在进行数据读取的时候会优先把索引加载到内存中。
执行计划:可以判断一条SQL语句有没有使用索引。
具体操作:
explain+sql
执行计划结果中的重要字段:
-
type:连接类型
system:表只有一行记录,相当于系统表
const:通过索引一次就找到,只匹配一行数据
eq_ref: 唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配
ref:非唯一性索引扫描,返回匹配某个单独值的所有行用于=、<、> 操作符带索引的列
range:只检索给定范围的行,使用一个索引来选择行,一般使用 between、<、>
index:只遍历索引树
ALL:全表扫描,性能最差 -
key(代表当前sql语句在执行时,有没有用到索引)
-
Extra(using index:表示使用了覆盖索引,using index condition:表示使用了索引下推)