【发布时间】:2020-09-10 19:20:31
【问题描述】:
我有一个名为 posts 的 Postgresql 11.8 表,我想在其中定义 JSONB 类型的列 slugs,其中将包含字符串数组,例如 ["my-first-post", "another-slug-for-my-first-post"]。
我可以使用 ? 存在运算符找到具有特定 slug 的帖子:SELECT * FROM posts WHERE slugs ? 'some-slug'。
每个帖子预计只有少数 slug,但帖子的数量预计会增加。
考虑到上面的查询,some-slug 可以是任何字符串:
- 如何定义索引以进行性能合理的查询(无全表扫描)?
- 如何确保相同的 slug 不会出现多次(在不同的数组中和在不同的数组中)?
我主要是在寻找 Postgresql 11 的解决方案,但也有兴趣了解未来版本中的解决方案(如果有的话)。
该数据库用于 Rails 6.0 应用程序,因此我对 Rails 迁移语法也很感兴趣。
【问题讨论】:
-
如果你想确保唯一性,为什么不直接使用表格呢?
标签: ruby-on-rails postgresql indexing jsonb unique-constraint