代码之家  ›  专栏  ›  技术社区  ›  jsstuball

索引何时在小型参考表上对齐?

  •  0
  • jsstuball  · 技术社区  · 6 年前

    CREATE TABLE category 
    (
         category VARCHAR PRIMARY KEY
    );
    

    将包含20-250行。

    我知道,使用索引意味着INSERT性能会受到轻微影响,而且额外的磁盘空间使用也会受到影响。显然,我根本不在乎这两个,因为我的参考表很小,很少改变。

    假设我在主表中插入一行;为了强制执行给定的引用约束,Postgres是否需要对引用的表执行某种SELECT,以检查值是否存在?

    如果是这样的话,那么即使表非常小,如果我预期插入主表的频率足够高,那么索引是否在几乎每个小表上都是合理的呢?

    还是我找错树了?(没有双关语)

    1 回复  |  直到 6 年前
        1
  •  2
  •   a_horse_with_no_name    6 年前

    显式索引是合理的,但不是必需的。引用列应声明为主键。这将自动创建索引。为什么要主键?参照完整性。您需要确保引用这些表的表具有正确的值。

    CREATE TABLE category (
        categoryId smallint generated always as identity primary key
        category VARCHAR unique
    );