Sự khác biệt giữa clustered và non-clustered index trong PostgreSQL?
Trong PostgreSQL, chỉ mục (index) là một công cụ quan trọng giúp cải thiện hiệu suất của các truy vấn. Có hai loại chỉ mục chính là clustered index và non-clustered index. Dưới đây là sự khác biệt giữa chúng:
1. Clustered Index
Định Nghĩa: Một clustered index xác định thứ tự vật lý của các bản ghi trong bảng. Mỗi bảng chỉ có thể có một clustered index vì các bản ghi chỉ có thể được sắp xếp theo một cách duy nhất.
Cách Hoạt Động: Khi bạn tạo một clustered index trên một cột, PostgreSQL sẽ sắp xếp các bản ghi trong bảng theo giá trị của cột đó. Điều này làm cho việc tìm kiếm các giá trị gần nhau trở nên nhanh chóng hơn.
Sử Dụng Tốt Nhất: Clustered index thường được sử dụng cho các cột mà thường xuyên được sử dụng để tìm kiếm, sắp xếp hoặc tham gia (join).
Ví Dụ: Nếu bạn có một bảng lưu trữ thông tin người dùng và bạn muốn thường xuyên truy vấn theo ID người dùng, bạn có thể tạo một clustered index trên cột ID.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);
2. Non-Clustered Index
Định Nghĩa: Một non-clustered index là một chỉ mục mà không ảnh hưởng đến thứ tự vật lý của các bản ghi trong bảng. Nó tạo ra một cấu trúc dữ liệu riêng biệt, tham chiếu đến vị trí của các bản ghi trong bảng.
Cách Hoạt Động: Khi bạn tạo một non-clustered index, PostgreSQL sẽ tạo ra một cấu trúc chỉ mục chứa các giá trị được chỉ mục và một con trỏ đến các bản ghi trong bảng. Điều này cho phép tìm kiếm nhanh chóng nhưng không sắp xếp lại các bản ghi trong bảng.
Sử Dụng Tốt Nhất: Non-clustered index phù hợp cho các cột mà bạn thường xuyên tìm kiếm nhưng không cần thiết phải sắp xếp theo thứ tự vật lý trong bảng.
Ví Dụ: Nếu bạn thường xuyên tìm kiếm người dùng theo email, bạn có thể tạo một non-clustered index trên cột email.
CREATE INDEX idx_email ON users(email);
Tóm Tắt Sự Khác Biệt
Đặc Điểm
Clustered Index
Non-Clustered Index
Thứ Tự Vật Lý
Thay đổi thứ tự vật lý của bản ghi
Không thay đổi thứ tự vật lý
Số Lượng
Chỉ có một (mỗi bảng chỉ có một)
Có thể có nhiều (nhiều chỉ mục)
Tìm Kiếm
Nhanh cho các truy vấn sắp xếp
Nhanh cho các tìm kiếm, tham gia
Hiệu Suất Ghi
Chậm hơn khi ghi dữ liệu do sắp xếp
Thường nhanh hơn khi ghi dữ liệu
Kết Luận
Sự khác biệt giữa clustered và non-clustered index trong PostgreSQL chủ yếu nằm ở cách thức tổ chức và sử dụng dữ liệu. Việc lựa chọn loại chỉ mục phù hợp cho từng tình huống sẽ giúp tối ưu hóa hiệu suất truy vấn và ghi trong cơ sở dữ liệu của bạn.
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
Strictly Necessary Cookies
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.