У меня есть этот SQL-запрос, который сначала выбирает из относительной короткой таблицы число, которое затем используется для другого выбора, на этот раз из очень большой таблицы, определенной информации с использованием кода из первой. Это занимает более 30 минут только для одного выбора, и мне нужно оптимизировать, так как мне нужно выполнить 300 таких выборок, но с разными SWNAME. Буду признателен за любые советы и подсказки, которые вы мне дадите. Спасибо !
SELECT SWOBJECTID
FROM MBR_INST_PRODUCTS
WHERE SWPRODRELEASEID IN
(SELECT SWPRODRELEASEID
FROM ORO_PPY_OPTIONS
WHERE SWNAME LIKE 'Nov Flexibil Offer:Net Unlimited for 1MON')
AND rownum <2;
SWNAME like 'Nov Flexibil Offer:Net Unlimited for 1MON' - это то же самое, что и SWNAME = 'Nov Flexibil Offer:Net Unlimited for 1MON'Over 300 of these queries in a run - не могли бы вы отредактировать свой вопрос, чтобы добавить более подробную информацию о том, из чего состоит пробег? Например, возможно, что вам не нужно 300 запросов (может быть, один запрос может сделать работу), поэтому настройка каждого отдельного запроса может быть неправильным способом. Кроме того, что означает «очень много времени»? Какие индексы присутствуют в обеих таблицах? Какой план выполнения? Обновите свой вопрос, добавив эти дополнительные сведения, чтобы мы могли помочь вам лучше.
Отредактировал вопрос и поставил индексы и остальное.


Как насчет простого соединения?
SELECT m.swobjectid
FROM mbr_inst_products m
JOIN oro_ppy_options o ON o.swprodreleaseid = m.swprodreleaseid
WHERE o.swname = 'Nov Flexibil Offer:Net Unlimited for 1MON'
AND ROWNUM < 2;
Убедитесь, что столбцы swprodreleaseid проиндексированы.
Я бы написал этот запрос как:
SELECT ip.SWOBJECTID
FROM MBR_INST_PRODUCTS ip JOIN
ORO_PPY_OPTIONS po
ON po.SWPRODRELEASEID = ip.SWPRODRELEASEID
WHERE po.SWNAME = 'Nov Flexibil Offer:Net Unlimited for 1MON') AND
rownum = 1;
Для этого запроса вам нужны индексы на ORO_PPY_OPTIONS(SWNAME, SWPRODRELEASEID) и MBR_INST_PRODUCTS(MBR_INST_PRODUCTS).
Почему
likeи почему неSWNAME = 'Nov Flexibil Offer:Net Unlimited for 1MON'?