索引
当表中数据量庞大时,往往搜索一条数据就会耗费很长的时间等待
索引是帮助数据库高效获取数据的数据结构
create index 索引名 on 数据表名(字段名);
为该表下的某一字段创建索引,检索耗时会大大的减小
- 索引的优缺点
优点:提高数据查询的效率,降低数据库的IO成本
通过索引对数据进行排序,降低数据排序的成本,降低CPU消耗。
缺点:索引会占用存储空间,降低了insert,update,delete的效率
索引的数据结构
结构:MySQL数据库支持的索引结构有很多,如:Hash索引,B+Tree索引,Full+Text索引等,我们平常的索引,如果没有明确指明的情况下,都是指默认的B+Tree结构组织的索引
为什么不使用二叉树或者是红黑树作为结构?
当数据量庞大的时候,层级深,检索效率大大减小
- B-Tree树:
每一个键值最后都会在最后一行进行呈现,每一个键值都会相对应的数据,在每一个磁盘块中进行二分查找,查找对应的指针,继续查找,知道找到对应的指针
- 每一个节点,可以存储多个key(有n个key就会有n个指针)
- 所有的数据都存储在叶子节点,非叶子节点仅用于索引数据
- 叶子节点形成了一颗双向链表,便于数据的排序以及区间范围查找
语法
创建索引:
create [unique] index 索引名 on 表名(字段名,...);
查看索引:
show index from 表名;
删除索引:
drop index 索引名 on 表名;
**注意:**创建表的时候如果为字段加上unique约束,会自动添加一处唯一索引
主键字段在建表时,会自动创建主键索引。