2012-12-18 49 views
-1

我有老版本的Oracle 8.1.7有一個數據庫,我已經運行下面的聯合查詢調整下面的SQL查詢

select c_ordine_es 
     ,c_ordine_salesnet 
     ,v_oyov 
     ,v_annuale 
     ,v_oneoff 
     ,v_canone 
     ,c_operatore_tam 
    from v_ordine_cliente_easysell 

    where d_ultima_modifica>DataRif 
    union 
    select c_ordine_es 
     ,c_ordine_salesnet 
     ,v_oyov 
     ,v_annuale 
     ,v_oneoff 
     ,v_canone 
     ,c_operatore_tam 
    from v_ordine_cliente_easysell v 
     ,scarti_interfaccia_easysell_o s 
    where s.c_codice_es=v.c_ordine_es 
     and s.t_tabella_es=pkType.K_SCARTO_ORDINE_CLIENTE; 

我每次運行這些查詢的SQL客戶端(我用蟾蜍)掛起。這裏我必須提及v_ordine_cliente_easysellscarti_interfaccia_easysell_o中的數據,這兩個視圖/同義詞是使用DB鏈接(到另一個SIEBEL DB)獲取的。我猜這個問題是在通過DB_LINK獲取數據時發生的,因爲SIEBEL DB非常繁忙。你能否建議我如何調整上述查詢?

解釋計劃去像下面

 
OPERATION   OPTIONS OBJECT_NODE POSITION COST CARDINALITY BYTES 
SELECT STATEMENT   28 28 478912 61779648 
HASH JOIN   1 28 478912 61779648 
INDEX FAST FULL SCAN  1 2 11354 102186 
REMOTE  SIEB.WORLD 2 23 4218 506160 
+0

也許你需要'UNION ALL',不'UNION'。 –

+0

謝謝@FlorinGhita,我試了一下。但我想問題是與查詢的第二部分。當我單獨運行數據時,花費太多時間來獲取數據。有沒有什麼建議可以提高DB LINK的數據讀取性能? – Subhamoy

+2

** 8.1.7。**?真?這已經超出了年齡的支持。要獲得任何有用的反饋,您應該發佈查詢的執行計劃。 –

回答

0
  1. 使表v_ordine_cliente_easysell的本地副本。
  2. 製作表scarti_interfaccia_easysell_o的本地副本 t_tabella_es=pkType.K_SCARTO_ORDINE_CLIENTE過濾。
  3. 上運行的本地副本查詢,但使用UNION ALL