Функция PLSQL, используемая в предложении where - проблема производительности - PullRequest
1 голос
/ 14 ноября 2010

У меня есть запрос, который работает вполне нормально для ограниченного числа ROWNUMS, но как только он превысит этот конкретный ROWNUM, он будет очень жалким

Ниже приведен запрос:

SELECT p.col1,pv.col1 FROM tab1 p, tab2 tv, tab3 pv WHERE myFunc(pv.col1) = 1 AND tv.col1 = pv.col1 AND p.col1 = tv.col2 AND ROWNUM < 4500

Все эти таблицы имеют огромные (более миллиона) записей.

Вышеупомянутый запрос выполняется с очень приличной скоростью.

Если ROWNUM <5000 или более, тогда это занимает довольно много времени. </p>

Можно ли как-нибудь улучшить производительность вышеупомянутого запроса?

1 Ответ

1 голос
/ 14 ноября 2010

Проверьте, есть ли индексы для каждого столбца соединения в каждой таблице, и после этого вы можете использовать функциональные индексы, см., Например: http://techonthenet.com/oracle/indexes.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...