问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PostgreSQL的hash索引是否有用

发布网友 发布时间:2022-04-24 12:02

我来回答

2个回答

懂视网 时间:2022-04-30 12:49

     对于~、~*、like和ilike操作符来说,它们缺少很多特性:①对语言支持较弱,比如不能识别单词的复数形式。②没有有效的分类和排序手段 。 ③执行速度缓慢,通常就是因为无法有效的使用索引。

      全文索引允许文档被预处理,并且它可以为后边的快速搜索保存一个索引。预处理做的工作主要有:①解析文档标记。比如它可以标识不同类别的记号,它可以区分数字、复合词、电子邮件地址等等,它们使用不同的处理方式。我们的pgsql使用解析器来执行这一步。②转换标记为词。词是一个字符串,就像一个标记一样,但是它被标准化过,这样同一个词的不同形式都是一样的。比如它们一般会删除后缀。我们的pgsql使用词典执行这一步。它可以提供各种标准词典,以及为特定的需求创造的自定义词典。③为优化搜索存储预处理文档。通常每个文档都可以表示为标准化词汇排序数组。

       对于字典,它可以允许细粒度控制如何使用合适的字典规范化标记。我们可以:①定义不被索引的屏蔽词。②映射同义词到一个词。③使用同义词词典将短语映射到一个词。④根据词典将词的不同形式映射到一种范式。⑤根据词根将一个词的不同形式映射成为一种范式。

        通常一个文档就是全文搜索系统的搜索单元,它可以是一篇文章或者是一封邮件。文本搜索引擎必须能够解析这个文档,而且可以存储它们同关键词的联系性,而这些联系用来搜索包含查询词的文档。

       在pgsql中,文档通常是一个数据库表中一行的文本字段,或者是这些字段的可能组合(级联),可能存储在多个表中或者动态的获得。也就是说,一个文档可以由索引的不同部分部分构成,它不一定非要作为一个整体存储。

版权声明:本文为博主原创文章,未经博主允许不得转载。

辛星浅析postgresql中的全文索引(上)

标签:辛星   pgsql   postgresql   全文索引   

热心网友 时间:2022-04-30 09:57

根据PostgreSQL的手册,PostgreSQL中hash索引有很大的缺陷,不推荐使用。
Hash 索引操作目前没有记录 WAL 日志,因此如果数据库崩溃有未写入的改变, 我们可能需要用REINDEX重建 Hash 索引。另外, 对hash索引的改变在初始的基础备份后不是基于流复制或者基于文件复制的, 所以对于随后使用它们的查询会给出错误的回复。因为这些原因, 我们并不鼓励使用 Hash 索引。
并且hash索引只支持"等于"查询,而PostgreSQL中作为默认索引类型的btree能支持包括“等于”在内的各种比较操作,功能上覆盖了hash索引。因此,在PostgreSQL中,对常规数据类型,btree索引是不二之选。(相比Oracle中有过于丰富的索引类型可选择,在PostgreSQL中建索引是不是更轻松一点?)
那么,既然不推荐使用hash索引,PostgreSQL为什么还要实现hash索引呢?
PostgreSQL的hash索引使用的线性hash算法,可以动态扩展桶数,理论上的查询复杂度接近O(1),这是btree无法比拟的。下面做个实测,也证明了在大数量的情况下,hash索引的性能确实明显优于btree。所以在某些极少的特殊场景下,hash索引也还是可以考虑的。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
正确的调搓丝板方法 正确的调搓丝板方法介绍 搓丝板失效的多种原因及如何预防? 副职领导签批公文技巧 上级审批意见怎么写 怎么卸摘网吧电脑上的“世界之窗”浏览器 怎么才能卸载世界之窗浏览器? 麻烦帮我翻译两个句子,谢谢,谢谢。 ...结构层次和结构关系 原理讲下 谢谢谢谢 老师讲过了我么听懂啊_百度... 这两个句子的主干是什么,谢谢谢谢 为什么会有人选择一辈子不结婚呢? mysql 索引中的USING BTREE 是什么意思?? word如何把数字设为千分位? sqlite 怎么知道索引在哪个索引btree里 索引的种类 MySQL B+树索引和哈希索引的区别 MySQL Hash索引和B-Tree索引的区别 mysql btree 索引和hash索引的区别 MySQL索引的Index method中btree和hash的区别 淋浴花洒有哪几种安装方式 MySQL索引类型 btree索引和hash索引的区别 淋浴房怎么安装,具体步骤是怎样的 华为型号JMM-AL00手机屏幕点不动修要多少钱? 浴室花洒是每天都离不开的洗澡工具,花洒安装有什么技巧? 朱砂是什么?它的作用是什么,市场价格贵吗? 考教师上岗证需要什么条件 朱沙价格是多少一斤? 没有教师资格证可以办辅导班么 为什么我们老家的朱砂一克就几百上千网上的就那么便宜呢? 猪砂多少钱一克 去教育机构当老师需要教师证吗 请教:word文档数字千分位 如何将Word中的数字转换为千分位的格式 在word里怎么将数字转化为千分位的 如何把一篇word文档里大量的数字设置千分符 怎么设置二十六键上有手写 设置26键加手写 红米k30如何设置在26键上写字? 电脑打字怎么快速熟悉26个字母在键盘上的排布?十个手指分别应司职于哪些按键? 如何快速记住键盘的26个键的位置 就是怎么在26键情况下使用手写,之前的手机可以,现在忘记怎么弄的了?_百度问一问 键盘上26英文字母左手无名指负责键有? 怎样用对方加微信 知道一个人的微信昵称,怎么加他呢? 型号jmm-al00能不能装储存卡? 网络电视机顶盒哪个牌子比较好?家里的坏了要换一个 steam上的问题,我愣是搞不明白社区社区打不开,个人资料资料打不开 steam社区不管怎么弄都进不区怎么弄啊? 我连steam老是打不开社区页面,网络是正常的,怎么解决? 华为手机型号JMM一AL00帐号13781969933找回密码? 小学生批作业,优和优良,有关系吗