Tôi có một bảng có các mục nhập không hoạt động, active = 1 cho active và active = 0 cho không hoạt động.Oracle: Lập chỉ mục một tập hợp con các hàng của một bảng
Tôi có nhiều chỉ mục trên bảng này, nhưng tôi chỉ cần các chỉ mục được duy trì cho các mục nhập hoạt động vì ứng dụng chỉ truy vấn dữ liệu đang hoạt động. Dữ liệu không hoạt động cần phải được lưu giữ bởi vì nó có thể hoạt động trở lại, nhưng điều này thường chỉ được thực hiện với các bản cập nhật hàng loạt, tuy nhiên sẽ không sử dụng chỉ mục.
Tôi nhận thấy việc lập chỉ mục các mục nhập không hoạt động (có ngày càng nhiều mục nhập hoạt động) chiếm khá nhiều không gian.
Có cách nào trong Oracle (10g) để làm một cái gì đó như thế này:
create index an_idx on tab (active, col1, col2, ... , coln) where active = 1
?
nỗ lực trước:
tôi đã cố gắng sử dụng một chức năng chỉ số dựa để thiết lập cột đầu tiên để null khi active = 0
như vậy:
create index an_idx on tab (decode(active, 1, 1, null), col1, col2, ... , coln)
Tuy nhiên, Oracle vẫn dường như chỉ số cột không hoạt động trong trường hợp này.
Nếu tiết kiệm không gian là mục tiêu của bạn, phương án 2 sẽ có ý nghĩa IMO. –