St.*_*rio 13 sql postgresql indexing bitmap
PostgreSQL 9.4
我刚刚遇到了这个帖子中Bitmap Index Scan提到的被调用的节点和所谓的底层位图数据结构的概念.据我所知,不支持创建位图索引.PostgreSQL
问:所以每当我们需要使用位图数据结构来执行时Bitmap Index Scan,我们需要先构建它,或者PostgreSQL在构造btree索引时创建它并在表更改时重建它吗?
Cra*_*ger 32
页面的位图是为每个查询动态创建的.它不会被缓存或重用,并在位图索引扫描结束时被丢弃.
提前创建页面位图是没有意义的,因为它的内容取决于查询谓词.
说你正在寻找x=1 and y=2.你有B树索引x和y.PostgreSQL没有组合x并y进入位图然后搜索位图.它扫描索引x以查找所有页面的页面地址,x=1并生成一个位图,其中可能包含的页面x=1为true.然后它会扫描y寻找y可能相等的页面地址2,从而制作一个位图.然后ANDS他们找到网页,都x=1和y=2可能是真实的.最后,它会自动扫描表,只读取可能包含候选值的页面,读取每个页面并仅保留行所在的位置x=1 and y=2.
现在,如果您正在寻找类似缓存的预构建位图索引,PostgreSQL 9.5中就有这样的东西:BRIN索引.它们适用于非常大的表,并提供了一种查找可以跳过的表范围的方法,因为它们已知不包含所需的值.
| 归档时间: |
|
| 查看次数: |
7628 次 |
| 最近记录: |