美文网首页
数据库之索引

数据库之索引

作者: 互联网中的一个咸鱼 | 来源:发表于2019-08-10 14:18 被阅读0次

    一、索引的相关知识

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

    索引的作用

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

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

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

    • B+tree

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

    二、索引的创建等操作

    索引的分类

    • 普通索引
    • 唯一索引
    • 主键索引
    • 组合索引
    • 主键索引

    普通索引

    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查询优化器的选择时间

    相关文章

      网友评论

          本文标题:数据库之索引

          本文链接:https://www.haomeiwen.com/subject/dmpljctx.html