• 数据库索引


    Hash索引和**B+**树索引

    B+树 是最常用于索引的数据结构,时间复杂度低:查找、删除、插入操作都可以可以在 logn 时间内完成。另外一个重要原因存储在 B+树 中的数据是有序的

    哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快。

    哈希索引优点:

              系索引的工作方式是将列的值作为索引的键值(key),键值相对应实际的值(value)是指向该表中相应行的指针。

    哈希索引缺点:

            哈希表是无顺的数据结构,对于很多类型的查询语句哈希索引都无能为力;(假如你想要找出所有小于40岁的员工。无法使用使用哈希索引进行查询,因为哈希表只适合查询键值对,也就是说查询相等的查询)

    • (1)不支持范围查询
    • (2)不支持索引完成排序
    • (3)不支持联合索引的最左前缀匹配规则

    R索引和位图索引:

       R 树通常用来为空间问题提供帮助。例如,一个查询要求“查询出所有距离我两公里之内的麦当劳”,如果数据库表使用R树索引,这类查询的效率将会提高。

    位图索引(bitmap index), 这类索引适合放在包含布尔值(true 和 false)的列上。

    索引的存储:

    库索引是创建在表的某列上的,并且存储了这一列的所有值。但是需要理解的重点是数据库索引并不存储这个表中其他列(字段)的值。举例来说,如果我们在 name 列创建索引,那么 age 列和 address 列上的值并不会存储在这个索引当中。数据库索引同时存储了指向表中的相应行的指针。指针是指一块内存区域, 该内存区域记录的是对硬盘上记录的相应行的数据的引用。因此,索引中除了存储列的值,还存储着一个指向在行数据的索引。

     

    数据库索引的代价

    (1)索引会占用空间。你的表越大,索引占用的空间越大。

    (2)在更新操作有性能损失。当你在表中添加、删除或者更新行数据的时候, 在索引中也会有相同的操作。

  • 相关阅读:
    java 数据结构容器之HashSet
    java LinkedList模拟堆栈
    Java实现windows7标准型计算器
    Java迭代器注意事项
    (动态规划求解)聪明的kk
    三张图讲清楚Java中的方法的参数传递机制
    Java对象在内存中的表示
    两张内存变化图揭秘二维数组的初始化
    四张內存变化图揭秘引用类型数组的初始化
    三张內存变化图揭秘基本类型数组的初始化
  • 原文地址:https://www.cnblogs.com/KL2016/p/15607739.html
Copyright © 2020-2023  润新知