zoukankan      html  css  js  c++  java
  • 数据库索引

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

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

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

    哈希索引优点:

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

    哈希索引缺点:

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

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

    R索引和位图索引:

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

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

    索引的存储:

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

     

    数据库索引的代价

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

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

  • 相关阅读:
    MapReduce 中的Map后,sort不能对中文的key排序
    wordCount程序中MapReduce工作过程分析
    使用eclipse的快捷键自动生成的map或者reduce函数的参数中:“org.apache.hadoop.mapreduce.Reducer.Context context”
    "hadoop namenode -format"命令的作用和影响的文件
    伪分布模式下使用java接口,访问hdfs
    MySQL Server 5.5.44免安装版配置详解
    quartz Cron表达式一分钟教程
    【转载】jQuery弹出层始终垂直居中于当前屏幕
    LeetCode 151 翻转字符串里的单词
    LeetCode 43 字符串相乘
  • 原文地址:https://www.cnblogs.com/KL2016/p/15607739.html
Copyright © 2011-2022 走看看