Я нахожусь в запросе.Oracle SELECT statement slow
SELECT ttf.default_text
FROM test_template_field ttf, TEST t
WHERE ttf.schema_field_id = 2044
--HERE
AND ttf.test_template_id = t.test_template_id
AND t.workflow_node_id IN (
SELECT wn.workflow_node_id
FROM lims_sys.workflow_node wn, lims_sys.workflow_user wu
WHERE wn.workflow_id = wu.workflow_id
AND wn.workflow_node_type_id = 42
AND wu.u_external_category IN ('M'))
group by ttf.DEFAULT_TEXT
Это прекрасно работает, и через 8 секунд я верну свой результат. Но если я добавлю еще одну функцию И, это займет 28 минут, прежде чем я верну свои результаты. Его об этом, его место было «--HERE»
AND ttf.default_text NOT IN ('Preparation Microbiology', 'Other', 'Preparation')
Я не знаю, почему это медленно .. Может кто-то помочь?
Вы ознакомились с планом объяснения запроса с предложением 'NOT IN' и без него? Вероятно, вы узнаете причину. Скорее всего, это предложение заставляет на столе [полное сканирование таблицы] (http://en.wikipedia.org/wiki/Full_table_scan) (что означает прохождение каждой записи в таблице). Может быть, вам нужен индекс на 'test_template_field.default_text'? –
Есть ли указатель на test_template_field.default_text? Сколько записей в таблице? –
План объяснения сказал: есть полная таблица acces на test_template_field и тест. В тестовой таблице было ОГРОМНОЕ количество данных (более 10000000 записей), а test_template_field - 6980 записей. И нет индекса на test_template_field.default_text. –