索引作用
相当于一本书的目录。
索引虽然可以提高效率,但是不能随意添加索引,因为索引也是数据库中的对象;
也需要进行维护,也需要不断进行维护,具有维护成本。
比如:表中的数据数据经常被修改,这样就不适合添加索引,索引需要重新排序,进行维护。
什么时候添加索引?
数据量庞大;
该字段很少进行DML操作;【因为索引也要进行维护】
该字段经常出现在where子句中;
TIP
主键和具有unique约束的字段自动会添加索引。
索引的创建
查看MySQL语句执行情况:explain + 要执行语句
创建索引
sql
create index 索引名 on 表名 (字段名)
删除索引:
sql
drop index 索引名称 on 表名
在没有创建索引前,检索素所有,并且扫描所有
创建后扫描方式变了
索引原理
索引结构:B+ tree
索引原理
先将数据中的指定字段进行排序,如:按字母的话会先按照字母进行排序,并进行分区,使用tree进行【二分法查找】查找。
因为索引创建后存储了指定字段的排序以及原字段的硬盘物理地址,并直接在硬盘进行定位。