1.什么是索引
(1)索引就是目录
为了查询的速度增加,建立一个目录(这也就意味着需要额外的开支)
一般在where字句后经常出现的字段。(通常在数据量超过10000条时使用)
没有大量的DML语句(DML语句频繁使用的时候,不适合建立索引)
(2)以二叉树举例来说明索引
索引相当于把表中的数据分区存放,用某个关键词+关键词对应的记录的存储地址(物理地址),以图为例,查找Smith时,从king开始,向下向右,再向下向右,然后向下向左,找到Smith的物理地址,进而找到Smith;利用这种方式只查找了少部分数据,大大减少了扫描范围;
**注意:**如果有多个smith,则存放在一起,即一个’子树’存放多个同名为Smith的对应的物理地址;
2.对比建立索引和没有建立索引
(1)没建索引时默认全表扫描
explain select * from emp where ename='smith';
未建立索引时,途中type所示,为ALL,即全表查询
(2)建立索引后,扫描的是目录,大大减少了扫描的范围
explain select * from temp where ename='smith';
建立索引后type显示为ref,此时查找不在需要全表搜索
3.建立索引
(1)复制一张表
create table temp as select * from emp;
(2)对新复制的表建立索引
create index name_index on temp(ename);
(3)利用索引搜索
select * from emp where ename='smith';