"Nikolay Ponomarenko" ...
> Hello, All!
>
> Продолжая, сугубо теоретические, эксперименты с большими базами,
> мучаю таблицу с 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))
> (хотя для where o.id_obj=3 все нормально, что в принципе тоженемного
> понятно)
> лечится это нашим излюбленным хинтом on o1.p_1=o.id_obj+0
> получая PLAN JOIN (O INDEX (PK_OBJECTS), O1 INDEX (OBJECTS_IDX2))
>
> А вопрос собственнов в чем - на что сервер тратит память, когда идет по
> первому(неоптимальному) плану? Ибо он кушает всю свободную память на
> сервере(в моем случае 800мб),

    что возвращает select count(*) from objects where id_obj<3

?

-- 
Хорсун Влад



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

Ответить