Tôi có một chỉ mục trên một cột nullable và tôi muốn chọn tất cả các giá trị của nó như thế này:Index cho cột nullable
SELECT e.ename
FROM emp e;
Trong kế hoạch giải thích tôi thấy một FULL TABLE SCAN
(thậm chí là một gợi ý không hiệu quả)
SELECT e.ename
FROM emp e
WHERE e.ename = 'gdoron';
Liệu sử dụng chỉ số ...
tôi googled và phát hiện ra không có mục null trong chỉ số, do đó truy vấn đầu tiên không thể sử dụng các chỉ số.
Câu hỏi của tôi rất đơn giản: tại sao không có mục nhập rỗng trong chỉ mục?
Như một sang một bên, toàn bộ bảng có thể được thực hiện trong ví dụ đầu tiên của bạn khi bạn đang chọn một tỷ lệ lớn các bản ghi từ bảng (trong trường hợp của bạn, 100%). Cho dù bạn có chỉ số giá trị Null hay không không quan trọng thì người tối ưu hóa đã chọn tham gia FTS cho truy vấn này. – Ollie
@Ollie. Đây là lý do tại sao tôi đã viết rằng tôi đã thử nó một lần nữa với một gợi ý 'và nó đã không giúp đỡ ... – gdoron
tốt, điển hình b-tree chỉ số sẽ không bao gồm nulls. Chỉ mục bitmap sẽ lập chỉ mục null. – tbone