подскажите

актуалфорум
Дата: 23.11.2009 18:39:23
в процедуре выполняется несколько sql запросов имеющих одинаковую конструкцию вроде
where ....
   and user_id in (select user_id from users where ...)
как думаете стоит ли один раз считать подзапрос
select user_id from users where ...
в колекцию и заменить в запросах его на чтение из колекции? я так понимаю что выиграю в чтениях новероятно проиграю в cpu?
-2-
Дата: 23.11.2009 18:45:18
актуалфорум,

не парься. для малых часто используемых таблиц поставь cache. а если версия позволяет, то хинт result_cache в подзапрос.
andrey_anonymous
Дата: 23.11.2009 18:55:09
Если имеете ввиду соединять коллекцию с таблицей вместо таблицы users, то особого смысла это не имеет. Проиграете на размере pga/uga где будет размещаться коллекция и на последующих трансформациях коллекции в resultset посредством table().

Установка cache "для мелких частоиспользуемых" обычно также лишена смысла, поскольку блоки данных таких таблиц и так будут постоянно в голове кэша, особенно если выбран индексный доступ.

Что вообще подвигло Вас на изыскания? Если, к примеру, имеет место проблема "горячих" блоков при индексном доступе к users, то стоит рассмотреть реверсирование индекса по user_id.
актуалфорум
Дата: 23.11.2009 19:01:34
спасибо, просто вечер в голове бредовые идеи =)