KDPoid
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Есть две таблицы: Код: CREATE TABLE T1 ( id numeric(10) not null, code number not null, CONSTRAINT T1_pk PRIMARY KEY (id) ); CREATE TABLE T2 ( id numeric(10) not null, type_id number not null, CONSTRAINT T2_pk PRIMARY KEY (id) ); | есть запрос: Код: select ... from T1, T2 where T1.id = T2.id and T1.code = 47 and T2.type_id = 2 ; | Индексы есть по всем полям. План показывает, что оракла сначала по индексу ограничивает T2. Получает дохрена записей. Нет, даже больше. ДОХРЕНА. Потом для каждой записи из T2 делает поиск соответствия в T1. А в Т1 после отсечения осталось бы записей чуток. И если бы оракла сообразила начать с неё - скорость выросла бы в разы. Но сбор статистики на базе отключен. Оптимизация только по правилам (решение политическое я могу только смириться) А для правил, индексы с обеих сторон и оракл не видит ни каких причин что-то менять. Пляски с изменением порядка перечислениея таблиц, и разными подселектами эффекта не дали. Оракла ухмыляется, раскрывает все скобки, и начинает проверять T2... Пятница... может кто навскидку расскажет, как эту стенку пробить... |