目录
在mysql当中,怎么查看一个SQL语句是否使用了索引进行检索?
在mysql当中,主键字段上,以及unique字段上都会自动添加索引的!!!!
在任何数据库当中主键上都会自动添加索引对象。id字段上自动会有索引,因为id是PK。另外在mysql当中,一个字段上如果有unique约束的话,也会自动创建索引对象。
在任何数据库当中,任何一张表的任何一条记录在硬盘存储上都有一个硬盘的物理存储编号。
在mysql当中,索引是一个单独的对象,不同的存储引擎以不同的形式存在,在MyISAM存储引擎中,索引存储在一个.MYI文件中。在InnoDB存储引擎中索引存储在一个逻辑名称叫做tablespace的当中。在MEMORY存储引擎当中索引被存储在内存当中。不管索引存储在哪里,索引在mysql当中都是一个树的形式存在。(自平衡二叉树:B-Tree)
建议不要随意添加索引,因为索引也是需要维护的,太多的话反而会降低系统的性能。
建议通过主键查询或者通过unique约束的字段进行查询,效率是比较高的。
create index emp_ename_index on emp(ename);
给emp表的ename字段添加索引,起名:emp_ename_index
drop index emp_ename_index on emp;
将emp表上的emp_ename_index索引对象删除。
explain select * from emp where ename = 'KING';
type=ALL。扫描了14条记录,说明没有使用索引
create index emp_ename_index on emp(ename);
给emp表中的ename字段添加索引
explain select * from emp where ename = 'KING';
使用了索引,只扫描了1条记录