- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在常规的 b-tree
索引中,叶节点包含一个键和一个指向 heap
元组(用户表行)的指针,这表示在 b-tree
,索引元组和用户表行是一对一的关系。
就像在 b-tree
中一样,GiST
叶节点也包含一个关键数据和有关 heap
元组存储位置的信息,但是 GiST
叶子可能包含也可能不包含其键中的整行数据(如果我错了请纠正我)。那么,如果我能够将我的表数据的一部分存储在一个叶节点中,另一部分存储在另一个叶节点中,并使它们都指向一个堆元组,是否可能?这将使 GiST
索引元组和 heap
元组之间的关系多对一。
这一切都正确吗?
最佳答案
GiST 索引是 B 树索引的推广。
在B 树索引 的非叶 block 中,两个连续的索引条目定义了这些索引条目之间的指针目的地子树中索引值的边界:
换句话说,每个指向下一个较低级别的指针都标有一个包含子树中所有值的区间。
这仅适用于具有 total ordering 的数据类型.
GiST 索引扩展了该概念。非叶节点中的每个条目都有一个条件,该索引条目下的子树必须满足该条件。
扫描 GiST 索引时,我会在索引页面中搜索所有可能包含与我的搜索条件匹配的值的条目。由于没有总排序,条件有可能(但当然不可取)以某种方式“重叠”,以便我搜索的内容可以在多个条目中匹配。在那种情况下,我必须下降到所有引用的子树,但我可以跳过那些条目条件保证子树不能包含与我的搜索条件匹配的条目的条目。
这有点抽象,所以让我们用一个例子来充实它。
GiST 索引的一个经典示例是 R-tree 索引,这是一种类似于 PostGIS 使用的地理索引:
这里索引条目的条件是一个边界框,它包含索引条目的子树中包含的所有几何图形的边界框。因此,在搜索几何图形时,我会获取其边界框并查看页面中的哪些索引条目包含此边界框。这些是我必须下降到的子树。
在这个例子中可以看到的一件事是 GiST 索引可以是有损,也就是说,它给了我一个neccesary,但不是足够的 如果我找到了命中条件。如果实际表条目也满足条件(并非每个几何图形都是矩形),则始终必须重新检查在 GiST 索引扫描中找到的叶条目。这就是为什么 GiST 索引扫描在 PostgreSQL 中总是位图索引扫描。
这一切听起来既美好又简单。一个好的 GiST 索引的困难部分是 picksplit 算法,它决定索引页拆分时哪个索引条目进入两个新索引页中的哪个。效果越好,索引的效率就越高。
所以你看,GiST 索引在很多方面“有点像”B 树索引。您可以将 B 树索引视为 GiST 索引的优化特例(参见 btree-gist contrib 模块)。
这让我回答你的问题:
GiST leaf node also contains key datum and info about where the heap tuple is stored
这是真的。
GiST leaves may or may not contain entire row data in its keys
当然索引条目不包含整行。但我认为你的意思是正确的。 GiST 叶子中的条件可以比表中的实际对象更宽,就像边界框比几何体大一样。
if I am able to store one part of my table data in one leaf node and the other part in another leaf node and make both of them point to one heap tuple, would it be possible? This will make the relationship between GiST index tuple and heap tuple many to one.
这是错误的。即使一个值可能满足 GiST 索引页中的多个条目,它也只包含在一个子树中,并且只有一个叶页条目指向任何给定的表行。它是一对一的关系,就像在 B 树索引中一样。
关于postgresql - GiST 索引中的索引元组与用户表行之间的关系是多对一还是一对一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54760557/
我想知道在公共(public)要点中使用代码是否合法,因为要点没有许可证。 我无法在网上找到有关公共(public) Gists 的任何许可信息。 最佳答案 根据https://softwareeng
我有 an existing GitHub Gist ,我想向其中添加另一个文件。 GitHub Gist API 的数据模型表示可以将多个文件添加到 Gist。 我怎样才能做到这一点? 最佳答案 转
这是图像文件: https://gist.github.com/mbostock/5503544#file-thumbnail-png 我尝试在 Gist 的编辑模式下拖放图像文件。这在 Chrome
我一直在使用Moski's Gist-Blogger用于将 GitHub Gists 插入 Blogger 动态 View 。 我的使用方法如下: Loading code.... 但是,目前,要
我还没有使用它们中的任何一个。我查看了他们的网站并找到了他们的简短描述: Github 要点: Instantly share code, notes, and snippets. 巴斯宾: Past
新的 GitHub Gist 界面有一个针对整个要点的嵌入片段,其中嵌入了要点中的所有文件。旧界面在要点中为每个文件嵌入了代码。有人知道是否有嵌入单个文件的技巧吗? 最佳答案 从左侧获取要点 URL,
gist-region 的默认行为是离开描述 空白的。要设置描述,需要切换到gist-list缓冲然后使用函数gist-edit-current-description设置描述 . 我希望能够设置 描
This gist正在显示一条消息 File suppressed. Click to show.在其中一个文件上。为什么这个文件被压制? 该文件包含一个书签,以 javascript: 开头。 ,也
我正在尝试使用 github api 列出一组用户的所有要点。这工作得很好,但我似乎无法让它为我自己或任何其他用户返回私有(private)要点。 我知道您可以在请求中设置范围,但我不知道如何在 JQ
我有一个私有(private)要点,我想将其嵌入到由 github 托管的 jekyll 网站中。但每当我使用以下方式嵌入它时: {% gist 931c1c8d465a04042403 %} 它会自
我需要从原始要点加载shell脚本,但找不到找到原始URL的方法。 curl -L address-to-raw-gist.sh | bash 最佳答案 现在,找到raw按钮(在源代码的右上方)。 原
我正在尝试使用 Markdown 语法突出显示创建一个要点。不幸的是不能在这里张贴截图。 然后我按“保存”并没有应用语法突出显示。 Python 代码也存在同样的问题。 最佳答案 您需要将文件扩展名更
为了将来自Github的很长的Gists嵌入到Wordpress博客中,什么代码将允许我设置高度,以便生成垂直滚动条? 500px左右的东西将是完美的。 编辑:现在已经解决了该问题,但是我花了很多时间
在常规的 b-tree 索引中,叶节点包含一个键和一个指向 heap 元组(用户表行)的指针,这表示在 b-tree,索引元组和用户表行是一对一的关系。 就像在 b-tree 中一样,GiST 叶节点
当我嵌入一个长的要点(在本例中为 Jupyter Notebook )时,我网站上的结果框具有垂直滚动条。我想避免使用这些滚动条,只需要一个更长的页面(就像在实际的要点网站上一样)。有什么办法可以用
我经常使用 GiST 索引,所以我了解它们的性能特征和它们使用的 API 以及您需要一个的原因。我不明白的是,在幕后,它们究竟是如何工作的?我正在寻找其背后的底层数据结构和算法的解释。 如果我想实现自
我遇到了一个返回 JSON 数据的 Gist https://gist.githubusercontent.com/rdsubhas/ed77e9547d989dabe061/raw/6d7775ea
我目前正在为自己的一个新博客使用 angular 和 rails,但我被卡住了。我用了ng-bind-html用于从我的后端注入(inject)代码。 现在我使用自己的指令修复了它。 当我尝试从 Gi
我正在使用 Postman 创建匿名 Gists。 Gists 已成功创建,但是当我尝试修补它们时,我得到: { "message": "Not Found", "documentation_
我创建了一个个人访问 token ( https://github.com/settings/tokens ) 给 Gist烫发。 我试图用它来创建一个要点,但我得到了 { "message":
我是一名优秀的程序员,十分优秀!