use*_*855 33 postgresql indexing composite-primary-key
在MySQL中,当我创建复合主键(比如列)时X, Y, Z
,所有三列都会自动成为索引.Postgres会发生同样的事吗?
Erw*_*ter 80
如果您创建复合主键,则(x, y, z)
PostgreSQL在一个UNIQUE
多列btree索引的帮助下实现此功能(x, y, z)
.此外,NOT NULL
当然,所有三列都必须是a PRIMARY KEY
和a 之间的主要区别UNIQUE INDEX
.
除了对你的数据有明显的限制,多列索引也对查询比三个单独指数的表现有所不同的效果x
,y
和z
.
我们最近在dba.SE上就这个相关问题进行了非常彻底的讨论.通过示例,基准,讨论和对9.2版本中仅索引扫描功能的展望.
特别是,主键(x, y, z)
可以加速查询条件x
,(x,y)
或者(x,y,z)
最佳.这也将有助于使用查询上y
,z
,(y,z)
或(x,z)
但远程度较轻.
如果需要加快对后一种组合的查询,可能需要更改PK约束中的列顺序或创建一个或多个其他索引.
归档时间: |
|
查看次数: |
16402 次 |
最近记录: |