在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. 複合主鍵
- 3. 複合主鍵,
- 4. Postgresql重複的主鍵
- 5. Mysql複合主鍵
- 6. PostgreSQL bytea主鍵
- 7. 引用複合主鍵
- 8. EFCodeFirst ctp 5複合主鍵
- 9. 可互換,複合主鍵
- 10. Bigtable和複合主鍵
- 11. SQL Server複合主鍵
- 12. Yii複合主鍵與isNewRecord
- 13. 變化複合主鍵
- 14. 複合主鍵方案
- 15. jqGrid的複合主鍵
- 16. 學說複合主鍵外鍵
- 17. 複合主鍵/外鍵頭痛
- 18. 休眠 - 複合主鍵包含外鍵
- 19. 從外鍵的複合主鍵POJOs
- 20. SQL外鍵的表的複合主鍵
- 21. 使用外鍵保存複合主鍵
- 22. SQL:外鍵引用複合主鍵
- 23. 橋表的主鍵或複合/複合鍵
- 24. 如何創建複合外鍵的表,複合主鍵
- 25. 複製Postgresql外鍵
- 26. 爲什麼使用多列作爲主鍵(複合主鍵)
- 27. Sqoop進口:複合主鍵和文字主鍵
- 28. 複合主鍵經文一個基於列的主鍵
- 29. 更新POSTGRESQL中的主鍵
- 30. Hibernate/JPA和PostgreSQL - 主鍵?
你的意思是MySQL創建**三** *索引*?聽起來非常奇怪 – 2012-07-05 21:19:32