Có, lợi ích mang lại khi bạn muốn truy vấn một phần của chỉ mục. Nếu bạn đặt các biến vị ngữ được sử dụng trước, chỉ mục có thể được sử dụng cho các truy vấn có liên quan đến các vị từ đó nhưng không phải tất cả các cột trong chỉ mục.
Ngoài ra, trừ khi bạn có các yêu cầu khác, nó có thể giúp đặt các vị từ chọn lọc nhất lên trước, vì điều này có thể cắt giảm chỉ mục tìm kiếm các hoạt động nhanh hơn.
Trong trường hợp của bạn IDX_2
không nhất thiết là dư thừa tùy thuộc vào bản chất của các truy vấn trên bảng. Tuy nhiên, có thể không cần thiết phải bao gồm tất cả các cột. Ví dụ, nếu bạn thực hiện rất nhiều truy vấn location
và date
sau đó IDX_2
có thể hữu ích để giúp giải quyết các truy vấn đó vì IDX_1
không đúng thứ tự sẽ hữu ích cho việc đó. Tuy nhiên, bạn có thể thấy rằng nó item
là dư thừa IDX_2
.
Từ 9i, Oracle đã giới thiệu một toán tử 'bỏ qua quét' trong đó các cột chỉ mục theo dõi có thể được truy vấn hiệu quả hơn, điều này có thể làm giảm nhu cầu về các chỉ mục bổ sung của loại này.
Trong một trường hợp cụ thể hơn, nếu bạn đang truy vấn item
bằng location
và date
và không cần bất kỳ cột khác thì truy vấn có thể được hoàn toàn giải quyết mặc dù chỉ số mà không cần phải đọc bất cứ điều gì từ bảng. Bạn cũng có thể xây dựng các chỉ mục bao gồm các cột không được lập chỉ mục được đính kèm. Nếu tất cả các cột cần thiết có thể được giải quyết từ chỉ mục che phủ, truy vấn hoàn toàn không cần phải chạm vào bảng chính.
Cuối cùng, để trả lời cho câu hỏi cuối cùng của bạn: Nếu bạn có một tập hợp các truy vấn được sử dụng thường xuyên đang sử dụng nhiều tài nguyên và có thể được điều chỉnh bằng cách sử dụng một chỉ mục thì chắc chắn đáng để xem xét. Tuy nhiên, việc duy trì các chỉ mục đi kèm với một chi phí chung khi chèn, do đó bạn sẽ phải đánh đổi hiệu năng truy vấn so với chi phí mà các chỉ mục đặt vào các hoạt động chèn hoặc cập nhật.