簡體   English   中英

SQL查詢優化Oracle

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM