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мб), после чего вся машина впадает в кому из-за 
забивания дисковой подсистемы работой со свопом. Смотрел я правда значения в 
TaskManager. Да, запрос этот ничего не возвращает.

FB2 rc2
база 160гб
Page size               4096
ODS version             11.0

-- 
-=Я привык быть пунктуальным, хотя это часто обрекает меня на одиночество=-
With best regards,  Nikolay Ponomarenko 



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

Ответить