zoukankan      html  css  js  c++  java
  • mysql 索引

    #

    索引
        加速查询速度
        mysql的存储引擎的索引基于 b+树hash做的
            innodb b+树 聚集索引/聚簇索引 非聚簇索引
            myisam b+树 非聚簇索引
            memory hash
        b+树做了那些事儿?为什么基于b+树的索引会快?
            一颗平衡树
            在非叶子节点不存储数据相关的信息,只存放指针  :  让树的高度降低了,所有的数据的寻找的时间是固定的
            在叶子节点会直接存储数据或者数据的指针       :  能够直接找到对应的数据
            叶子节点的各个数据块之间使用双向链表来连接   :  能够更好的进行范围排序相关的操作
        要想缩短树的高度,我们能做的事情
            1.就是让每一列的宽度尽量的小
        聚簇索引和非聚簇索引
            聚簇索引
                一张表只能有一个
                 只在innodb存储引擎中存在
                b+树 : 在叶子节点会直接存储数据
                所有的数据存储的物理地址是根据索引顺序   : 排序快
            非聚簇索引
                每张表可以有多个
                在myisam,innodb中都存在
                b+树 : 在叶子节点会存储数据的指针
                所有的数据存储的物理地址和索引顺序无关
                如果创建多个非聚簇索引,那么insert delete数据都会非常慢,并且占用更多的硬盘和内存
    在创建表的时候创建索引
    CREATE TABLE ind1 (
                    id int primary key,
                    name char(12),
                    index ind_name(name)
                    );
    
    在建表之后添加索引
    CREATE TABLE ind2 (
                    id int primary key,
                    email char(12)
                    );
    CREATE INDEX ind_email on ind2(email);
    alter table ind2 add index ind_email(email);
    
    删除索引
    DROP INDEX ind_email ON ind2;
    覆盖索引(好事儿)
    是你能够从辅助索引中直接拿到想要的数据,而不需要再经过IO从聚集索引中取值了
    
    可以在配置中开启慢日志,把所有的sql语句执行的超过了你预期时间的都记录下来,方便我们查看具体慢的sql语句,来进行修改和优化
    
    聚集索引  直接把数据存储在建立好了的索引中
    非聚集索引(辅助索引) name,sex 只有索引字段存储在索引中,该字段所在行的其他数据存储在另外的地址,在辅助索引的叶子节点上有一个指针指向这行数据所在的地址
    select name where name like 'eva';
    select name,sex where name like 'eva';
    
    age创建一个索引
    select age where age > 60;   # 覆盖索引
    select age,name where age > 60;   # 不是覆盖索引
    
    age,name创建一个联合索引
    select age,name where age > 60;   # 覆盖索引
    explain和覆盖索引 甚至和索引都没有任何关系
    它只是在真正使用某一条sql语句之前先来看一看这条语句计划中是怎么执行的
  • 相关阅读:
    Adding timestamps to terminal prompts
    opensuse nvidia
    小物体检测
    openSUSE 多个GPU设置 深度学习 Caffe PyTorch 等
    openSUSE 高清屏设置
    手把手教你NLTK WordNet使用方法
    [ICCV 2019] Weakly Supervised Object Detection With Segmentation Collaboration
    Instance Segmentation入门总结
    [PAMI 2018] Differential Geometry in Edge Detection: accurate estimation of position, orientation and curvature
    [CVPR2017] Deep Self-Taught Learning for Weakly Supervised Object Localization 论文笔记
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/11273072.html
Copyright © 2011-2022 走看看