数据库之索引

2019-08-10  本文已影响0人  互联网中的一个咸鱼

一、索引的相关知识

简单来说,索引就是数据库的数据结构,进一步说就是该数据结构中存储了一张表中某列的所有值

索引的作用

如果没有索引,数据库会逐行查询整张表,就算找到要搜索的数据也会继续搜索,因为谁也不能保证数据是唯一的,这就是“全表扫描”
而索引的作用就是加快查询速度,从根本上减少需要扫描的记录的行数

建立索引会加快查询速度的原因

添加索引的话,首先去索引列表中查询,而我们的索引列表是B类树的数据结构,查询的时间复杂度为O(log2N),定位到特定值得行就会非常快,所以其查询速度就会非常快。

其实就是非二叉树
一个父结点可以有多个子结点,只有叶子结点才存储数据,其余的都可以是索引
关于树形结构这里不做过多解释

二、索引的创建等操作

索引的分类

普通索引

create index index_name on table(row)
drop index index_name on table;
show index fomr table;

唯一索引

create unique index index_name on table(row)
alter table table_name drop index index_name

主键索引

当一列被创建为主键,会自动创建主键索引

联合索引

create index index_name on table(row1,row2..)

三、索引的使用

验证索引是否被命中

explain select name from t1 where   name='shark'\G

** EXPLAIN输出列**

JSON名称 含义
id select_id SELECT标识符
select_type NULL SELECT类型
table table_name 输出行的表
partitions partitions 匹配的分区
type access_type 连接类型
possible_keys possible_keys 可供选择的索引
key key 实际选择的指数
key_len key_length 所选键的长度
ref ref 列与索引进行比较
rows rows 估计要检查的行
filtered filtered 按表条件过滤的行的百分比
Extra NULL 附加信息

四、索引过多的缺点

1.增加写的压力
2.增加MySQL查询优化器的选择时间

上一篇 下一篇

猜你喜欢

热点阅读