Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle में SQL क्वेरी ट्यूनिंग

अपनी क्वेरी को सरल बनाकर प्रारंभ करें क्योंकि आपको एक से अधिक DISTINCT करने की आवश्यकता नहीं है s (यह केवल अंतिम आउटपुट में आवश्यक है) और आप ऐसे कई कॉलम चुन रहे हैं जिन्हें आप आउटपुट नहीं कर रहे हैं। आप कुछ तालिकाओं में भी शामिल हो रहे हैं जिन्हें आप नहीं चुन रहे हैं और यदि इनके लिए कई मिलान पंक्तियां हैं तो यह डुप्लिकेट पंक्तियां उत्पन्न कर सकती हैं - जैसे कुछ का उपयोग करना EXISTS इन जुड़ावों को समाप्त कर सकते हैं।

इस तरह:

WITH MARC_SEL AS (
  SELECT A.SOURCE,
         MARA.MATNR,
         MARC.WERKS
  FROM   XXX_MAIN.XXX_XSAP A
         INNER JOIN XXX_MAIN.XXX_SAP_MARA MARA
         ON (    A.MATNR = MARA.MATNR 
             AND A.MTART = MARA.MTART )
         INNER JOIN XXX_MAIN.XXX_SAP_MARC MARC
         ON (    MARA.MATNR = MARC.MATNR )
  WHERE  EXISTS( SELECT 'X'
                 FROM   XXX_MAIN.XXX_MP_WERKS_PLANT_XREF PX
                 WHERE  PX.LEGACY_PLANT = MARC.WERKS
                 AND    PX.SOURCE = 'SP' )
  AND    EXISTS( SELECT 'X'
                 FROM   XXX_MAIN.XXX_SAP_MBEW MBEW
                 WHERE  MARC.MATNR = MBEW.MATNR
                 AND    MARC.WERKS = MBEW.BWKEY )
  AND    A.SOURCE  = 'SP'
)
, MVKE_SEL AS (
  SELECT  NVL(MX_VKORG.SAP_DE_VAL,'/') VKORG,
          NVL(SUBSTR(MX_VKORG.SAP_DE,6,2),'/') VTWEG,
          MX_VKORG.DESC4 
  FROM    XXX_MAIN.XXX_MP_VKVT_XREF MX_VKORG
  WHERE   EXISTS ( SELECT 'X'
                   FROM   XXX_MAIN.XXX_SAP_MVKE MVKE
                   WHERE  MX_VKORG.SOURCE_DE_VAL = MVKE.VKORG
                   AND    SUBSTR(MX_VKORG.SAP_DE,6,2) = MVKE.VTWEG )
  AND     MX_VKORG.SOURCE_TBL = 'SP'
  AND     MX_VKORG.SOURCE_DE = 'MVKE'
  AND     SUBSTR(MX_VKORG.SAP_DE,1,5)= 'VKORG'
  AND     MX_VKORG.DESC2 IS NULL
)
SELECT DISTINCT
       MARC.SOURCE,
       MARC.MATNR,
       MVKE.VKORG,
       MARC.WERKS,
       MVKE.VTWEG  
FROM   MARC_SEL MARC
       INNER JOIN MVKE_SEL MVKE
       ON (    MARC.MATNR = MVKE.MATNR   
           AND MARC.WERKS = MVKE.DESC4 )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQl देव, 2 तिथियों के बीच सप्ताह के दिनों की संख्या को कैसे कैलक करें?

  2. ओरेकल सबक्वेरी में अमान्य पहचानकर्ता त्रुटि पर ध्यान नहीं देता

  3. SQLPlus - PL/SQL ब्लॉक से कई फाइलों में स्पूलिंग

  4. Oracle SQL डेवलपर के लिए JDK संस्थापन का पूरा पथनाम

  5. पंक्ति में त्रुटि:PL/SQL:SQL कथन पर ध्यान नहीं दिया गया। पैकेज बॉडी बनाते/बदलते समय