Query Processing Order - query боловсруулах дараалал

Execution Plan-ий талаар авч үзэхээс өмнө эхлээд бид Ораклын query боловсруулах логик дарааллыг ойлгох нь чухал. Дараах query-г жишээ болгон авч үзье.

 SELECT
      f.product AS beer
      , p.product AS crisps
  FROM
      fridge f
      CROSS JOIN
      pantry p
  WHERE
      f.product = 'Beer'
    AND f.temperature < 5
    AND f.size = '50 fl oz'
    AND p.product = 'Crisps'
    AND p.style = 'Cream Cheese'
    AND p.size = '250g'
  ORDER BY
      crisps
      , beer
      ;

өөр нэг query:

SELECT
      
product AS item
      
MIN(temperatureAS min_temperature
      
COUNT(*) AS num_products
  
FROM
      
fridge
  
GROUP BY
      
item
      
;

дээрх хоёр query-г ажиллуулбал сүүлийнх нь ажиллахгүй. Дараах query боловсруулах дарааллаас яагаад вэ гэдэг харагдаж байна.

FROM -> CONNECT BY ->  WHERE ->  GROUP BY ->  HAVING -> SELECT ->  ORDER BY

Мэдээж хэрэг таны query-д эдгээр бүх нөхцлүүд байх албагүй жишээлбэл GROUP BY  бичээгүй бол HAVING ашиглахгүй тийм болохоор дараах зургийг харвал илүү ойлгомжтой.  

2 дахь query ажиллахгүй байгаа шалтгаан бол GROUP BY дээр дарааллын дагуу биелэгдээгүй байгаа SELECT дээрх alias-ийг ашигласан учраас invalid identifier
 гэсэн алдаа буцаана.   

Comments

Popular posts from this blog

NLS_LANG хувьсагчийн утгыг өөрчлөх