postgresql - BRIN 索引创建
问题描述
我正在尝试使用 BRIN 索引,并且我想确保在创建索引之前对我的数据进行排序。
在 PostgreSQL和Postgres中的表行更改顺序中提出的所有要点都 选择 BTREE 而不是 BRIN 索引 帖子、评论和答案,最好在您的列上放置一个 order by 子句,执行 BRIN 索引,然后转关闭对表的约束。一旦约束消失,这是否有效并保持 BRIN 索引(索引不会爆炸)?
看起来我无法让 BRIN 索引对我的查询产生任何积极的性能影响,因为第二个链接的发布者已经注意到了。第一个链接中的答案似乎是一种可能的方法,但是在创建或更改表时,我找不到如何通过对列的约束来添加顺序。
解决方案
表没有ORDER BY
子句。
你唯一能做的就是使用CLUSTER
命令按照某个索引的顺序重写一个表。由于 BRIN 索引仅在排序完美的情况下才有效,因此只要对数据库没有更多修改,您就可以使用 BRIN 索引。这里的例外是INSERT
s 的顺序正确(例如,如果 BRIN 索引位于始终递增的时间戳上)。
所以 BRIN 索引只对数据没有被修改的数据仓库和时间序列有用。它们也不能用来支持ORDER BY
.
如果有疑问,请使用 B 树索引。
推荐阅读
- node.js - 如何测试 jest + sequelize?
- python - 命中KeyboardInterrupt子进程时如何将最后一个输出保存在变量中
- node.js - 带有集合 {merge} 的 Firestore 安全规则
- c++ - 使用 C++ 的条件
- regex - 使用正则表达式连接火花中的两个数据帧
- javascript - 将 React 应用程序部署到生产环境返回“您需要启用 JavaScript 才能运行此应用程序”
- powershell - Azure DevOps PowerShell 任务无法加载“Az.CosmosDB”模块
- asp.net-core - asp.net core web api不支持的媒体类型错误
- spring-boot-test - 使用配置文件时 SpringBoot 测试无法自动装配服务
- webdriver - 可以通过点击水豚来附加文件