недопонимаю...

guest222
Дата: 29.09.2004 18:59:52
есть запрос. он очень большой, но схематически выглядит примерно так:
select список всяких полей
from table1, table2, и еще несколько таблиц
where
table1.filed_id1=(select max(id) from table_a where table_a.field1 = table2.field2 и прочие условия)
and и далее прочие связки и условия

запрос тормозит на ожидании latch free (p2=106, т.е. library cache latch)
текущий выполняемый sql - это подзапрос select max()
table_a - приличных размеров, но подзапрос выполняется быстро (по индексу)
план конечно не самый лучший (есть и фулсканы по большим таблицам)
т.е. конечно, вызов подзапроса происходит для весьма приличного подмножества строк

непонятно происхождение ожидания latch free
z
Дата: 29.09.2004 19:09:22
table1.filed_id1=(select max(id) from table_a where table_a.field1 = table2.field2 и прочие условия)
такую штуку не делай...

лучше сделай

select список всяких полей
from table1, table2, и еще несколько таблиц,
(select field1, max(id) mid from table_a where table_a.field1 = table2.field2 и прочие условия group by field1)tablen
where
table1.filed_id1=tablen.mid
and tablen.field1=table2.field2
and и далее прочие связки и условия