Giả sử bạn đang hỏi về tính năng "gợi ý chỉ mục" phổ biến được tìm thấy trong nhiều cơ sở dữ liệu, PostgreSQL không cung cấp tính năng như vậy. Đây là một quyết định có ý thức của nhóm PostgreSQL. Bạn có thể tìm thấy tổng quan tốt về lý do tại sao và những gì bạn có thể làm thay vào đó tại đây. Về cơ bản, lý do là đó là một cuộc tấn công hiệu suất có xu hướng gây ra nhiều vấn đề hơn sau này khi dữ liệu của bạn thay đổi, trong khi trình tối ưu hóa của PostgreSQL có thể đánh giá lại kế hoạch dựa trên số liệu thống kê. Nói cách khác, kế hoạch truy vấn tốt ngày nay có thể không phải là kế hoạch truy vấn tốt cho mọi thời đại và các gợi ý chỉ mục buộc phải có một kế hoạch truy vấn cụ thể mọi lúc.
Là một chiếc búa rất cùn, hữu ích cho việc kiểm tra, bạn có thể sử dụng enable_seqscan
và enable_indexscan
thông số. Xem:
- Kiểm tra việc sử dụng chỉ mục
-
enable_
tham số
Những thứ này không phù hợp để sử dụng trong quá trình sản xuất . Nếu bạn gặp vấn đề với lựa chọn kế hoạch truy vấn, bạn nên xem tài liệu để theo dõi các vấn đề về hiệu suất truy vấn. Đừng chỉ đặt enable_
params và bước đi.
Trừ khi bạn có một lý do chính đáng để sử dụng chỉ mục, Postgres có thể đang đưa ra lựa chọn chính xác. Tại sao?
- Đối với các bảng nhỏ, việc quét tuần tự sẽ nhanh hơn.
- Postgres không sử dụng chỉ mục khi các kiểu dữ liệu không khớp đúng cách, bạn có thể cần phải bao gồm các phôi thích hợp.
- Cài đặt lập kế hoạch của bạn có thể đang gây ra sự cố.
Xem thêm bài đăng trên nhóm tin cũ này.