Query Processing Order - query боловсруулах дараалал
Execution Plan-ий талаар авч үзэхээс өмнө эхлээд бид Ораклын query боловсруулах логик дарааллыг ойлгох нь чухал. Дараах query-г жишээ болгон авч үзье.
өөр нэг query:
SELECT
product AS item
, MIN(temperature) AS min_temperature
, COUNT(*) AS num_products
FROM
fridge
GROUP BY
item
;
дээрх хоёр query-г ажиллуулбал сүүлийнх нь ажиллахгүй. Дараах query боловсруулах дарааллаас яагаад вэ гэдэг харагдаж байна.
FROM -> CONNECT BY -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
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(temperature) AS min_temperature
, COUNT(*) AS num_products
FROM
fridge
GROUP BY
item
;
дээрх хоёр query-г ажиллуулбал сүүлийнх нь ажиллахгүй. Дараах query боловсруулах дарааллаас яагаад вэ гэдэг харагдаж байна.
Мэдээж хэрэг таны query-д эдгээр бүх нөхцлүүд байх албагүй жишээлбэл GROUP BY бичээгүй бол HAVING ашиглахгүй тийм болохоор дараах зургийг харвал илүү ойлгомжтой.
2 дахь query ажиллахгүй байгаа шалтгаан бол GROUP BY дээр дарааллын дагуу биелэгдээгүй байгаа SELECT дээрх alias-ийг ашигласан учраас invalid identifier
гэсэн алдаа буцаана.
Comments
Post a Comment