3 postgresql performance index disk-space btree
我对字符变化列有一个独特的限制,该列的长度通常约为 600,但可以达到 1000 万。
我已经阅读了B-Trees,但我无法确定索引将消耗多少磁盘空间,或者如此大的值是否会阻止索引高效运行。
具有如此大长度的字符变化列对 B 树索引的磁盘空间和时间有何影响?
在 Postgres 中,唯一约束是通过唯一的B 树索引实现的。根据文档:
添加唯一约束将自动在约束中使用的列或列组上创建唯一的 btree 索引。
索引使用与表相同的基本存储机制:数据页数组。索引有一些次要的附加功能。根据文档:
在表格中,一个项目就是一行;在索引中,项目是索引条目。
每个表和索引都存储为一个固定大小的页面数组(通常为 8 kB,尽管在编译服务器时可以选择不同的页面大小)。
索引条目的最大大小是数据页的三分之一,我在此引用 Peter Eisentraut:
PostgreSQL 主键长度限制
那是2730 字节(或更少)。这意味着您的UNIQUE约束是不可能的。
我会考虑添加一个带有哈希值的冗余列,并在其上创建一个唯一索引。
您可以使用内置函数md5()或更有效的方法来获得巨大的价值。
这是一个关注性能的相关解决方案:
索引最大行大小错误
| 归档时间: |
|
| 查看次数: |
5318 次 |
| 最近记录: |