MySQL 基础之十五:索引
主要内容:
本篇内容主要讲解索引的基本知识,注意只是最基础的东西,索引的内容很多,还挺重要,建议大家寻找别的东西进行深入了解。
索引:
首先要搞清楚索引是什么?它有什么作用?
通俗的来说,索引其实就是想当于一本书的目录,通过目录,可以快速地定位到对应的资源,一般就是表中的记录。
在数据库中,查询一张表,有两种方式:
第一种方式:全表进行扫描,如果表中的记录非常多,那么效率就非常低。
第二种方式:根据索引进行检索,效率高,因为缩小了扫描范围。
添加索引是给一个字段或者某些字段添加索引。
何时添加索引:
那么什么时候该给字段添加索引呢?
当数据量比较庞大的时候,这个时候,如果使用全表扫描的方法进行查询,那耗时就太大了。
该字段很少进行 DML 操作,这是因为对字段进行修改操作,索引也要跟着被维护,耗时啊。
该字段经常出现在 where 子句中。
小贴士:索引不是乱加的,如果太多的字段被添加为索引,结果可能适得其反。
主键和具有 unique 约束的字段会被数据库自动添加为索引
根据主键查询效率很高
查看 sql 语句的执行计划:
可以通过查看 sql 语句的执行计划,来查看 sql 语句别数据库系统解析后,是如何执行的,用到哪些索引。
mysql>explain select ename,sal from emp where sal=5000;
如何创建索引,删除索引:
create index 索引名称 on 表名(字段名);
drop index 索引名称 on 表名;
索引底层技术:
采用的数据结构是:B+树
索引分类:
单一索引:给单个字段添加索引
复合索引:给多个字段联合起来添加为 1 个索引
主键索引:主键上会自动添加为索引
唯一索引:有 unique 约束的字段会自动添加索引。
索引也有失效的时候,虽然某个字段被添加了索引,但是在查询的时候,如果条件不符合,也是不会用索引来进行查询的。
版权声明: 本文为 InfoQ 作者【打工人!】的原创文章。
原文链接:【http://xie.infoq.cn/article/23d2db36d48ebbd6e7eea9f14】。文章转载请联系作者。
评论