"Nikolay Ponomarenko" <[EMAIL PROTECTED]> wrote:
>
> Продолжая, сугубо теоретические, эксперименты с большими базами,

Кеша серверу сколько установил?

> мучаю таблицу с 1млрд записей, джойня саму с собой
>
> select o.* from objects o
> join objects o1 on o1.p_1=o.id_obj
> where o.id_obj<3
>
> нидекс по p_1, есесно хуже, чем по ПК id_obj, и на таком запросе сервер
> сваливается, как я могу понять, в перебор всей o1?
>
> PLAN JOIN (O1 INDEX (OBJECTS_IDX2), O INDEX (PK_OBJECTS))

Не верю (с) По O1 нет граничных условий, так что INDEX (OBJECTS_IDX2) тут 
быть не может. Должен быть натурал.

> лечится это нашим излюбленным хинтом on o1.p_1=o.id_obj+0
> получая PLAN JOIN (O INDEX (PK_OBJECTS), O1 INDEX (OBJECTS_IDX2))

Такой план будет очень хорош при <3 и очень плох при >3. Оптимизатор 
учитывает средний вариант, требующий скана половины таблицы.


--
Дмитрий Еманов




--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

Ответить