Tôi đang làm việc với một Oracle DB mới, với một bảng có các chỉ số sau:Oracle hiệu suất với nhiều chỉ số cùng một cột
- Index 1: Cola, ColB
- Index 2: Cola
Chỉ số thứ hai có dư thừa không và liệu điều này có tác động tiêu cực đến hiệu suất không?
Tôi đang làm việc với một Oracle DB mới, với một bảng có các chỉ số sau:Oracle hiệu suất với nhiều chỉ số cùng một cột
Chỉ số thứ hai có dư thừa không và liệu điều này có tác động tiêu cực đến hiệu suất không?
Google là bạn thân nhất của tôi:
http://www.orafaq.com/node/926
Điểm chính của bài viết này là:
If 2 indexes (I1 and I2) exist for a table and
the number of columns in Index I1 is less or equal to the number of column in index I2 and
index I1 has the same columns in the same order as leading columns of index I2
Then
If index I1 is UNIQUE then
If index I2 is used to support Foregh Key or for Index Overload then
Do Nothing
Else
Index I2 can be DROPPED
End If
Else
Index I1 can be DROPPED
End If
End If
Và tôi đồng ý với điều đó! Thực tế, tìm kiếm "các chỉ mục trùng lặp" trong Google để có loại câu trả lời khác.
Chỉ mục thứ hai là loại dự phòng - bất kỳ thao tác nào sử dụng chỉ mục 2 đều có thể sử dụng chỉ mục 1. Ngoài ra, ghi sẽ chậm hơn một chút do có chỉ mục khác cần cập nhật.
Điều đó nói rằng, Index2 không hoàn toàn dư thừa vì có thể nhanh hơn một chút vì bản thân chỉ mục có thể sẽ nhỏ hơn đáng kể.
có khả năng là nếu thống kê của bạn hết hạn, trình tối ưu hóa có thể chọn chỉ mục 2 khi cần chỉ mục 1. (Một gợi ý để tôi ưu hoa sẽ giải quyết điều đó, tất nhiên.)
Chỉ mục thứ hai khác nhau và không phải là dự phòng.
Làm thế nào về truy vấn này:
SELECT DISTINCT ColA FROM TABLE WHERE ColA IS NOT NULL;
Oracle có thể trả lời câu hỏi này hoàn toàn từ Index 2. Bây giờ, chỉ số 2 sẽ được dự kiến sẽ được nhỏ (ít hơn khối) so với chỉ số 1. Điều này có nghĩa, nó là một chỉ mục tốt hơn cho truy vấn trên.
Nếu ứng dụng của bạn không bao giờ thực hiện truy vấn phù hợp với chỉ mục 2 tốt hơn so với chỉ mục 1, thì nó sẽ không cần thiết cho ứng dụng của bạn.
Chỉ mục luôn là sự cân bằng hiệu suất. Khi chèn, cập nhật hoặc xóa được thực hiện có thêm công việc cần làm để duy trì từng chỉ mục bổ sung.
Điều này có được bù đắp nhiều hơn nhờ hiệu suất tăng được cung cấp bởi chỉ mục không? Phụ thuộc vào việc sử dụng ứng dụng và dữ liệu của bạn.
Điều này có thể đúng trong hầu hết các trường hợp, nhưng hãy xem câu trả lời của tôi khi có thể sai khi thả chỉ mục trùng lặp. –