Tolka |
---|
wurdu |
---|
начиная с 10g вместо AND_EQUAL используется BITMAP CONVERSION FROM ROWIDS, BITMAP CONVERSION TO ROWIDS. И это должна быть очень специфичная ситуация чтобы оптимизатор выбрал это преобразование вместо одного из индексов. |
а специфичность эту как-то можно описать?
При наличии выборки по полям, которые проиндексированны различными индексами, я довольно часто наблюдал в планах индексный джоин. И думал, что это нормальная ситуация, нежели специфичная... |
BITMAP CONVERSION FROM ROWIDS используется когда есть ряд неэффективных индексов на колонках с низкой селективностью, которые по одиночке не будут использоваться. Часто это связано с проблемами в дизайне, когда просто индексируются все поля. Эффективнее строить составной индекс или несколько bitmap. Но, конечно, можно представить ситуации, когда комбинирование B-tree может быть полезным. Например, в OLTP, когда bitmap индексы нежелательны из-за блокировок, а compressed B-tree индексы в принципе приводят к нужному результату, или когда проиндексированы внешние ключи и индексы все равно есть.