Цитата: Micle ➤ Олег, я не силён в оракле, но полагаю, что через запятую джойнить таблицы несколько расточительно. Тут left join на мой взгляд смотрелся бы куда лучше. Или у оракла нет такового (сильно сомневаюсь) ?
Я тоже не силен в программировании Oracle, но в нем поддерживается LEFT JOIN (т.е. ANSI-нотация) и есть LEFT JOIN, который можно было бы записать так
Код:
select ss.typename, count(ss.typename)
from supermag.smdoclog s, supermag.ssobjecttypes ss
where s.eventtime>sysdate -1
and ss.objtype = s.doctype(+)
group by ss.typename order by 2 desc;
т.е. в оракловой нотации. ANSI-варианты кое-как терпимо и без багов стали работать в 11 версии, хотя сам Том Кайт рекомендовал их использование еще в 10 версии. Я с самого начала пользовался оракловой нотацией, поэтому ANSI пользоваться не люблю, не умею. Но не поленился, переписал и сравнил планы
Код:
select ss.typename, count(ss.typename)
from supermag.ssobjecttypes ss
left join supermag.smdoclog s on
(ss.objtype = s.doctype and s.eventtime>sysdate -1)
group by ss.typename order by 2 desc;
практически идентичны, т.е. расход ресурсов даже на весьма значительной по размерам БД абсолютно одинаковый.