У меня есть запрос, который отлично работает при выполнении из SQL.
Это соединение таблицы и запроса. Обе таблицы содержат около 4 млн записей. В таблице документов есть растровые индексы, на которые я пытаюсь дать подсказку. План объяснения действительно показывает, что они хорошо помогают соединению, когда я вижу от жабы.
Я дал еще 2 подсказки, чтобы увидеть, помогут ли они, как видно. Один предназначен для прямого пути APPEND, а другой - для использования существующего индекса BTree на КПК.
Когда этот запрос выполняется для заменяемых переменных из SQL, результаты являются мгновенными, но тот же запрос внутри процедуры занимает 8 секунд или более.
Помимо плана процедуры, которому администратор базы данных еще не выполнил, что делать, если вы думаете о каких-либо вопиющих промахах? Заранее спасибо.
INSERT /*+ APPEND */
INTO tmp_search_gross_docs (document_id,
last_name,
first_name,
person_doc_association_id,
association_date)
SELECT /*+INDEX(pda IDX_DOC_PDOC_DOCID ) USE_NL(pda doc) */
pda.document_id,
last_name,
first_name,
person_doc_association_id,
association_date
FROM pda,
(SELECT /*+INDEX_COMBINE(attr IDX_BMP_SEARCH_FN,IDX_BMP_SEARCH_LN)*/
document_id, last_name, first_name
FROM doc attr
WHERE first_name LIKE l_first_name OR last_name LIKE l_last_name) doc
WHERE pda.document_id = doc.document_id;
) doc
WHERE pda.document_id = doc.document_id;
EXPLAIN Plan (от Toad для связывания переменных)
ВСТАВИТЬ ЗАЯВЛЕНИЕ ALL_ROWSCost: 1 086 010 байтов: 15 309 420 Количество элементов: 364 510
11 ЗАГРУЗИТЬ КАК ВЫБРАТЬ TMP_SEARCH_GROSS_DOCS
10 ДОСТУП К ТАБЛИЦАМ ПО ИНДЕКСУ ROWID TABLE PDA Стоимость: 3 байта: 20 Количество элементов: 1
9 Вложенных циклов Стоимость: 1086 010 байтов 15 309 420 Количество элементов: 364 510
ДОСТУП К 7 ТАБЛИЦАМ ПО ИНДЕКСУ ROWID TABLE ATTR Стоимость: 23 893 байта: 8 019 220 Количество элементов: 364 510
ПРЕОБРАЗОВАНИЕ 6 BITMAP в ROWIDS
5 BITMAP ИЛИ
ОБЪЕДИНЕНИЕ 2 BITMAP
1 ИНДЕКС BITMAP RANGE SCAN INDEX (BITMAP) IDX_BMP_SEARCH_FN 4 BITMAP MERGE
3 BITMAP INDEX RANGE SCAN INDEX (BITMAP) IDX_BMP_SEARCH_LN 8 INDEX RANGE SCAN INDEX IDX_PDA_EXP_DOC Стоимость: 2 Количество элементов: 1
Мощность 364 510 кажется неправильной, поскольку таблица содержит 3738562 строки, а для подставленных значений столбцов в WHERE количество составляет только 8892.
Но опять же, этот план, по крайней мере, говорит мне, что используются правильные индексы и выполняется очень быстро из редактора жабы.
Фактический план из PL / SQL все еще недоступен.
Не уверен, добавляет ли это ценную информацию или нет. Но мысль редактировать все равно буду. Спасибо