• MySQL 关于索引那点事


    索引

    其实数据库中的数据是按页存放的
    其实索引也是按页存放的
    所以本质上索引也占硬盘空间(以最小的消耗,换取最大的利益)


    索引是一种有效组合数据的方式!为快速查找到指定记录做铺垫

    目的就是快速或者某个记录!
              提高了数据库的检索速度!
    作用:
    大大提高数据库的检索速度
    改善数据库性能

    MySQL索引存储类型分类
      01.B-树索引:InnoDB,MyISAM均支持
      02.哈希索引

    其实索引是把双刃剑(利弊共存),如果使用不当,反而会降低索引性能

    主键:加快检索数据/唯一标识

    常用索引类型:
       01.普通索引:允许在定义为索引的列中 出现 重复值和空值!
       02.唯一索引:索引列不允许出现重复值,但是可以出现一个空值!
       03.主键索引:创建主键的时候,系统会默认创建一个主键索引!唯一!不能为空!
       04.复合索引:将我们的多个列组合起来!(name,sid)姓名和身份证号!
       05.全文索引:允许值的全文查询!允许空值和重复值!适合在一个内容比较多的列!text!
       06.空间索引:对空间数据类型的列建立的索引

    ■按照下列标准选择建立索引的列
    频繁搜索的列
    经常用作查询选择的列
    经常排序、分组的列
    ,经常用作连接的列(主键/外键)
    ■请不要使用下面的列创建索引
    仅包含几个不同值的列
    表中仅包含几行

    Eg:

      

     --  查询指定表的索引
    SHOW INDEX FROM student;
    TABLE:索引所在的表
    Non_unique:索引是否唯一   0:唯一  1:不唯一
    key_name:索引名称
    seq_in_index:该列在索引中的位置
    column_name:定义所用的列名称
    null:该列是否为空
    index_type:索引类型    
    
    --  给姓名增加 普通索引
    CREATE  INDEX index_studentName 
    ON student(studentName);
    -- 给学生姓名和身份证号 增加 组合索引
    CREATE INDEX index_name_sid
    ON student(studentName,identityCard)
    
    --  删除索引
    DROP INDEX index_name_sid ON  student;
    DROP  INDEX index_studentName ON  student;
     

    --  创建索引的原则
      01.经常被查询的列
      02.经常用作选择的列
      03.经常排序,分组的列
      04.经常用作连接的列(主键/外键)
     

     
    使用索引时的注意事项:
      01.查询时减少使用*返回全部的列,不要返回不需要的列!
      02.索引尽量要少,在字节数小的列上建立索引!
      03.where字句中有多个条件表达式的时候,包含索引的列要放在其他表达式之前!
      04.在order by的字句中避免使用表达式!

     

    (C) 房上的猫 。 保留所有权利。
     https://www.cnblogs.com/lsy131479/

    如需转载,请注明出处!!!


     

  • 相关阅读:
    spring的APO
    设计系统测试计划需要参考的项目文档有
    系统测试的策略
    软件测试包括
    简述你在以前的工作中做过哪些事情,比较熟悉什么
    在C/C++中static有什么用途?(请至少说明两种)
    引用与指针有什么区别?
    说说你对集成测试中自顶向下集成和自底向上集成两个策略的理解,要谈出它们各自的优缺点和主要适应于哪种类型测试;
    系统测试的策略
    通过画因果图来写测试用例的步骤为___、___、___、___及把因果图转换为状态图共五个步骤。 利用因果图生成测试用例的基本步骤是:
  • 原文地址:https://www.cnblogs.com/lsy131479/p/8465447.html
Copyright © 2020-2023  润新知