zoukankan      html  css  js  c++  java
  • 索引

    day 49
     
    索引
    元类
     
     

    什么叫索引?
     搜索
     主键
     外键
     index
     
     
     为了加速查询
     
     
     
     
     有序的
     数据量小的字段
     
     
     
     
     
     
     最左匹配原则
     
     聚集索引
     
     辅助索引
     
     覆盖索引
     
     回表
     
     
     
     
     主键加索引
     
     先建索引再加数据
     
     条件中有索引匹配上,命中索引
     
     无论索引如何设计,无法范围查询
     
     创建索引语句:
     创建索引很慢
     create index name_index on usr (name);
     
     索引不应当加在值重复度很高的地方。正确使用姿势,应该加在重复度低的地方
     
     模糊匹配
     
     
     
     
     
     
     
     
     62122 6100 1019 068 516
     
     
    ----------------------------------------------------------------------------------------------------------
    索引
    读多写少
    select * from emp where 条件;
    针对数据的优化:
     精准定位要找的数据,提升查询效率
     
     
     select id ,name from emp where id = 2;
     
    书的目录功能
    火车票
    门牌号
     
     索引在mysql中也叫做键,是存储引擎用于快速找到记录的一种数据结构。
     
     
     加速查询
     主键
     primary key
     
     除了有索引功能还有约束功能
     unique key
     
     只有索引功能
     index key
     
     

     怎么加索引?
     
     对哪些字段加索引?
      id字段可以加
      占空间较小的字段
      区分度高的字段
      
      索引字段不要参与运算,索引字段就是一个明确的值
      
      
     
    索引原理:
     本质就是不断缩小想要获取数据的范围来筛选出最终想要的结果。减少查询次数,提高查询速度
     
     
    磁盘io与预读
     io延迟9ms
      
    索引的数据结构
     B+树结构
     
     只有叶子结点才存放真正的数据,
     
     select id ,name from emp where id = 2;
     先读入id字段,根节点--->读到内存---->经过三次io找到
     
     树的高度,索引的数越低越少
     一个磁盘块的大小是固定的,应该对占内存数据量小的字段加索引,可以容纳更多的数据项
      
      
     聚集索引
      指的就是主键
      innodb表    每个表指定个主键,一定要有一个字段建树形结构
      
      聚集索引的特点:
       他的每个叶子节点上会存放一整条记录
       
      
      
     辅助索引
      除了聚集索引之外的都叫辅助索引
      特点是:
       叶子结点只放这个值,以及这个值的主键id编号。
     
     
     覆盖索引
      在你的叶子结点找到你想要的值,就是你想查询的结果割你的条件是一致的
      select age from emp where  age = 30;
     
    建一个索引的话速度会非常的慢,数据文件会比原来加大 
      
     回表 不如覆盖索引效率高
     

    explain 查询优化神器
    explain select * from s1 order by id limit 10;
    创建索引
    create index  idx_id on s1(id);
    创建一个索引,起一个名idx_id针对id的索引,on针对哪个表s1,针对s1的哪个字段(id)
    删索引
    drop index idx_id on s1;
     
    怎么创建主键的索引表
    alter table s1 add primary key(id);

    alter table s1 drop primary key ;
     
     
    跟范围有关系,有一个很大的范围,即使有索引也不会太快
    >
    <
    !=
    between and
    like模糊查询
     
     
    最左匹配原则
     

    and 且
    从左往右一个一个运行,有一个不成立就不成立
    or 或
     
     
     
     
    不是所有sql语句都可以优化的。
     
     
     
     
  • 相关阅读:
    Eclipse报错:pom.xml web.xml is missing and <fainOnMissingWebXml> is set to true
    WebStrom之React Native之HelloWord 【Windows】
    React Native报错:This error often happens when you’re running the packager (local dev server) from a wrong folder
    'adb' 不是内部或外部命令,也不是可运行的程序 或批处理文件。【Windows】
    Spring Boot项目部署到tomcat启动失败404
    Codeforces Beta Round #51 D. Beautiful numbers 数位DP
    UOJ 34 FFT
    POJ 2773 容斥原理
    HTPJ 1268 GCD
    HDOJ 2082 生成函数
  • 原文地址:https://www.cnblogs.com/zhangrenguo/p/10027538.html
Copyright © 2011-2022 走看看