在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