小编Smu*_*tje的帖子

Postgresql 中主键与外键的自动索引创建

对于 PostgreSQL 9.4 ( http://www.postgresql.org/docs/9.4/static/ddl-constraints.html ) 指出

外键必须引用作为主键或形成唯一约束的列。这意味着被引用的列总是有一个索引(主键或唯一约束的基础);因此检查引用行是否匹配将是有效的。由于从被引用表中删除一行或对被引用列进行更新将需要扫描引用表以查找与旧值匹配的行,因此索引引用列通常也是一个好主意。因为这并不总是需要,而且有很多关于如何索引的选择,外键约束的声明不会自动在引用列上创建索引。

我想知道这些行的作者是否忽略了一个主要观点:当我有一个父子关系(例如带有购物车位置的购物车)时,孩子(购物车位置)标记其与父项(购物车)的关系当我想获取给定父级的所有子级时,使用父级(购物车)主键的外键我使用非索引外键列。

因此,默认情况下不为外键列生成索引(与主键列相反)和让用户体验次优性能的开销是否超过维护索引的开销,而维护索引在较小的表大小下仅执行另一方面,查询性能的微小改进?

也许有人对导致此决定的数据库实现细节和推理有更多见解和/或可以指出为什么外键列的默认索引生成(在 Postgresql 中)可能导致未被注意的严重问题的原因。

postgresql index foreign-key primary-key

3
推荐指数
1
解决办法
3004
查看次数

标签 统计

foreign-key ×1

index ×1

postgresql ×1

primary-key ×1