zoukankan      html  css  js  c++  java
  • 索引相关问题

    密集索引和稀疏索引的区别

      1、密集索引的每个搜索码值都对应一个索引值

      2、稀疏索引只为索引码的某些键建立索引项

    主流mysql数据库引擎对这两索引的选择:

      InnoDB:

      1、如果一个主键被定义了,则改键作为密集索引。

      2、如果没有主键被定义,那么该表的唯一非空索引则作为密集索引。

      3、若不满足以上两点,InnoDB内部隐藏生成6字节的列作为密集索引。

      4、非主键索引存储相关键位和对应主键值,要定位数据必须需要两次查找。

      ISAM:

      主键索引个和辅助索引均为稀疏索引。

    联合索引最左匹配的成因:

      1、mysql会向右匹配直到遇到范围查询(<> between like等)终止。

      2、= 和 in可以乱序,因为mysql的查询优化器会帮我们调整成能够索引识别的形式。

      3、mysl创建复合索引首先会对最左边的索引列进行排序,在对第一个索引字段排序的基础上在对第二个索引列进行排序,第一个字段是绝对有序的,直接用第二个索引字段单独查找是用不到索引的,

    HASH索引弊端: 理论上来说HASH索引的效率要比B+tree的效率要高。

      1、仅仅能满足等于或者IN的查询,不能够使用范围查询。

      2、无法用来避免被排序的操作。

      3、不能利用部分索引键查询。

      4、不能避免表扫描。

      5、遇到大量HASH值相同的数据检索效率并不一定比B+树的检索效率高。

    位图索引弊端:

      目前只有oracle数据库支持位图索引,只仅限有限值的固定的几个值,比如性别,颜色等,但位图索引不适用高并发的OLTP应用,只使用与OLAP应用,当数据发生删除,修改则需要锁定所有的行以防读错数据。

    结论:

      HASH索引和位图索引由于自身避免并没有被广泛应用,与之相反的B+tree能很好的解决以上缺点,因此现在数据库是主流索引都是B+tree。

  • 相关阅读:
    MD5加密
    input text 只能输入数字
    input date 支持placeholder属性
    实例表单的增改删
    jQuery 框架中$.ajax()的常用参数有哪些?
    jquery的相关属性和方法
    JS中实现继承的六种方式及优缺点
    c++类型转换
    c++动态内存与智能指针
    c++类的构造函数
  • 原文地址:https://www.cnblogs.com/niuyg928/p/15144888.html
Copyright © 2011-2022 走看看