[英]SQL query optimization Oracle
我有這個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;
一個簡單的聯接怎么樣?
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)
上ORO_PPY_OPTIONS(SWNAME, SWPRODRELEASEID)
索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.