在MySQL中,当我创建一个复合主键时,比方说列X, Y, Z
,那么所有三列自动成为索引。 Postgres也一样吗?PostgreSQL复合主键
22
A
回答
52
如果您创建复合主键(x, y, z)
,PostgreSQL在(x, y, z)
的一个UNIQUE多列索引的帮助下实现此功能。此外,所有三列必须是NOT NULL
,当然这是PRIMARY KEY
和UNIQUE INDEX
之间的主要区别。
除了对你的数据有明显的限制,该multi-column index也有查询超过三个个人指标上x
,y
和z
表现有点不同的效果。
我们对最近的这个问题进行了非常彻底的讨论on dba.SE in this related question。通过示例,基准,讨论和展望index-only scans in version 9.2即将发布的功能。
特别地,上(x, y, z)
主键将加快与条件的查询上x
,(x,y)
或(x,y,z)
最佳。它也将有助于查询y
,z
,(y,z)
或(x,z)
,但程度较低。
如果您需要加快对后者组合的查询,可能需要创建一个或多个附加索引。
2
1
不,你会得到一个三列主键索引。
相关问题
- 1. PostgreSQL复合主键和串行增量?
- 2. postgreSQL主/外键不符合
- 3. 复合主键
- 4. 复合主键
- 5. 复合主键,
- 6. Postgresql重复的主键
- 7. JPA复合主键
- 8. Mysql复合主键
- 9. 复合主键或外键
- 10. 复合主键+外键
- 11. 外键复合主键
- 12. MySQL复合主键重复
- 13. PostgreSQL bytea主键
- 14. Glassfish/PostgreSQL表与复合(两部分)主键生成com.sun.jersey.spi.inject.Errors
- 15. PostgreSQL复制命令生成主键ID
- 16. 复合主键查询
- 17. REFERENCE ON复合主键
- 18. 复合主键的MySQL
- 19. NHibernate的复合主键
- 20. JPA复合主键生成
- 21. Yesod中的复合主键
- 22. Yii复合主键与isNewRecord
- 23. 休眠复合主键
- 24. EFCodeFirst ctp 5复合主键
- 25. 引用复合主键
- 26. C#cassandra复合主键
- 27. sqlite中的复合主键
- 28. jqGrid的复合主键
- 29. Bigtable和复合主键
- 30. 复合主键级联
你的意思是MySQL创建**三** *索引*?听起来非常奇怪 – 2012-07-05 21:19:32