Trong MySQL, khi tôi tạo khóa chính kết hợp, hãy nói với các cột X, Y, Z
, thì cả ba cột sẽ tự động trở thành chỉ mục. Điều tương tự cũng xảy ra với Postgres?Khóa chính hỗn hợp PostgreSQL
Trả lời
Nếu bạn tạo khóa chính kết hợp, trên (x, y, z)
, PostgreSQL thực hiện việc này với sự trợ giúp của một chỉ mục nhiều cột UNIQUE trên (x, y, z)
. Ngoài ra, tất cả ba cột phải là NOT NULL
, tất nhiên, đó là sự khác biệt chính giữa một số PRIMARY KEY
và UNIQUE INDEX
.
Bên cạnh những hạn chế rõ ràng trên dữ liệu của bạn, multi-column index cũng có ảnh hưởng phần nào khác nhau về việc thực hiện các truy vấn hơn ba chỉ số cá nhân trên x
, y
và z
.
Chúng tôi đã thảo luận rất kỹ lưỡng về gần đây on dba.SE in this related question. Với các ví dụ, điểm chuẩn, thảo luận và triển vọng cho tính năng sắp tới của index-only scans in version 9.2.
Cụ thể, khóa chính trên (x, y, z)
sẽ tăng tốc truy vấn với các điều kiện trên x
, (x,y)
hoặc (x,y,z)
tối ưu. Nó cũng sẽ trợ giúp với các truy vấn trên y
, z
, (y,z)
hoặc (x,z)
nhưng đến một mức độ thấp hơn nhiều.
Nếu bạn cần tăng tốc truy vấn trên các kết hợp sau, bạn có thể muốn tạo một hoặc nhiều chỉ mục bổ sung.
Yes:
PostgreSQL tự động tạo ra một chỉ số duy nhất khi một hạn chế duy nhất hoặc khóa chính được định nghĩa cho một bảng. Chỉ mục này bao gồm các cột tạo nên khóa chính hoặc ràng buộc duy nhất (chỉ mục nhiều cột, nếu thích hợp) và là cơ chế thực thi ràng buộc.
Tôi nghĩ câu hỏi là liệu mỗi cột có chỉ mục riêng của nó hay không. –
Đồng ý. Câu hỏi không phải là nếu 1 chỉ số đa lõi được tạo tự động nhưng tốt nếu 3 chỉ mục cột đơn được tạo. Và câu trả lời là không. Câu trả lời của bạn vẫn có liên quan vì nó cung cấp thông tin bổ sung, sau khi được chỉnh sửa tất nhiên. Trong thực tế, câu trả lời của @ dondi-michael-stroma có liên quan nhiều hơn cái đã được người yêu cầu ban đầu chọn. – Chucky
Không, bạn nhận được một chỉ mục cho khóa chính ba cột.
- 1. Sử dụng khóa chính hỗn hợp làm khóa ngoại
- 2. Phím hỗn hợp/khóa chính/duy nhất với Django
- 3. PostgreSQL: cách trả về kiểu hỗn hợp
- 4. Hỗn hợp và .net
- 5. Cách JsDoc loại "hỗn hợp"?
- 6. Cách tạo khóa chính kết hợp trong SQL Server 2008
- 7. Lệnh sao chép PostgreSQL tạo id khóa chính
- 8. Bảng PDF dạng hỗn hợp
- 9. Thay đổi khóa chính thành khóa tổng hợp (khóa chính đã tồn tại)
- 10. Khóa ngoài kép trong postgresql
- 11. Khóa chính kết hợp hay không?
- 12. Mảng hỗn hợp WSDL SOAP
- 13. Tại sao sử dụng nhiều cột làm khóa chính (khóa chính kết hợp)
- 14. Phát hiện biểu tượng khóa bị hỏng (nội dung hỗn hợp/không an toàn) từ Javascript
- 15. Notepad ++ thay thế biểu thức chính quy cho các ký tự hỗn hợp
- 16. Chuỗi ranh giới không chính xác trong thông báo đa/hỗn hợp
- 17. Đậu Java: Mảng hỗn hợp quá mức?
- 18. Loại tệp hỗn hợp với CarrierWave
- 19. lme4 lỗi mô hình hỗn hợp
- 20. Loại hỗn hợp trong C là gì?
- 21. Nút nội dung hỗn hợp XSLT
- 22. Tổng hợp khóa chính, khóa ngoài. Tham chiếu đến đối tượng hoặc khóa?
- 23. PostgreSQL tổng hợp mảng
- 24. Các khóa chính và khóa ngoài trong pgAdmin
- 25. Tạo khóa chính kết hợp bằng khung tổ chức 4.1
- 26. Cập nhật nhiều hàng với khóa chính khác nhau trong một truy vấn trong PostgreSQL?
- 27. POSTGRESQL Tham chiếu khóa ngoài Khoá chính của hai bảng khác nhau
- 28. TẠO TẠO NHƯNG với khóa CHÍNH trong một câu lệnh (PostgreSQL)
- 29. UUID có phải là khóa chính trong PostgreSQL cung cấp hiệu suất chỉ mục không tốt?
- 30. Git - xử lý tên tệp mã hóa hỗn hợp
Bạn có nghĩa là MySQL tạo ** ba ** * chỉ mục * không? Âm thanh hết sức kỳ lạ –