尊敬的专家yueliangdao0608,您好:小弟一直不明白hash索引和B+树索引在数据库应用技术中的优劣,以MYSQL为例,特别是在大数据量的查询优化处理下。请解释下hash索引和B+树索引各自的使用情况? 
还有一个问题,网上有人说hash索引在数据库高并发的情况下效率很低,是这样的吗?在数据库高并发的情况下hash索引和B+树索引哪个更优?谢谢!

解决方案 »

  1.   

    在CONST查询下,HASH索引可以发挥最大的作用。
    在RANGE和CONST查询下用B+树索引才可以发挥作用。你可以去看看HASH和B+树的结构,就很清楚为什么他们这样才能发挥他们的作用。
      

  2.   

    哦,您说的RANGE是范围查询吧?CONST查询是单个关键字的查询吧?
    恩,我再去看看《数据库系统概念》那本书,上面好像有这方面的介绍。
    谢谢啊
      

  3.   

    我对这个问题也很疑问,在理论上,Hash index 在等值查询时,比BTree效率更加高,
    但是在PostgreSQL中,无论是存储大小或等值查询,都不如BTree。
    以下是PostgreSQL的官方文档。
    Note: Testing has shown PostgreSQL's hash indexes to perform no better than B-tree indexes, and the index size and build time for hash indexes is much worse. Furthermore, hash index operations are not presently WAL-logged, so hash indexes may need to be rebuilt with REINDEX after a database crash. For these reasons, hash index use is presently discouraged. --------------http://www.postgresql.org/docs/8.1/static/indexes-types.html
      

  4.   

    所以我的意见是用BTree,如果你对Hash中Hash函数不是很了解的话