āĻ¯āĻžāĻ°āĻž āĻāĻā§ āĻĨā§āĻā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻā§āĻ¨
âĻ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻ āĻāĻā§āĻāĻŋāĻ¤ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻāĻžāĻŦā§ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§:
āĻ¤āĻžāĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻāĻŖā§āĻĄā§āĻ° āĻāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§ āĻĄ
āĻĒā§āĻ°āĻĨāĻŽ āĻ āĻāĻļā§āĻ° āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻā§āĻ°āĻŋāĻĒā§āĻ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¤ā§āĻ¸āĻ°ā§āĻā§āĻā§āĻ¤, āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋāĻ¤ā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§
"āĻ āĻ¸ā§āĻ¸ā§āĻĨ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ°ā§āĻ¸āĻŋāĻĒāĻŋ" .
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻ¸ā§āĻ¨ āĻ°āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ - āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻāĻŋ āĻ°āĻ āĻāĻ°āĻŦ āĻ¨āĻž, āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻŋ āĻāĻāĻāĻž āĻāĻ°ā§āĻāĻŋ, āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻ¸ā§āĻ¨ā§āĻĻāĻ° āĻāĻŦāĻ āĻŦā§āĻ§āĻāĻŽā§āĻ¯, āĻ¤āĻŦā§ āĻ āĻ¨ā§āĻ°ā§āĻ§āĨ¤
āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¯ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸āĻšā§āĻ¨ "āĻļā§āĻ" āĻ¸āĻš āĻ˛āĻ āĻĨā§āĻā§ āĻā§āĻ¨ā§ āĻāĻ¨āĻž āĻ
āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻā§āĻŦ āĻā§āĻļā§āĻ°ā§ āĻāĻŦāĻ āĻ¤āĻžāĻ āĻ
āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻĻā§āĻāĻžāĻā§āĻā§āĨ¤
āĻŦāĻŋāĻļā§āĻˇāĻ¤ āĻ¯āĻāĻ¨ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻ°āĻž āĻā§āĻĄā§ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻŦāĻĄāĻŋāĻāĻŋāĻā§ "āĻāĻ āĻž" āĻāĻ°ā§ (āĻāĻāĻŋ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻāĻŋ āĻ
ā§āĻ¯āĻžāĻ¨ā§āĻāĻŋ-āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻā§) āĻāĻ āĻ˛āĻžāĻāĻ¨ā§āĨ¤ āĻŦāĻŋāĻā§āĻˇāĻŋāĻāĻž !
āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋāĻā§ āĻāĻ°āĻ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻāĻžāĻŦā§ āĻāĻāĻā§āĻ¨āĨ¤
āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻā§ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻāĻžāĻŦā§ āĻāĻāĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻ
āĻ°ā§āĻĨāĻžā§, āĻ°āĻŋāĻā§āĻ¯āĻŧā§āĻ¸ā§āĻ āĻŦāĻĄāĻŋāĻāĻŋāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ¤ "āĻ¸āĻāĻ¯ā§āĻā§āĻ¤" āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ - āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§ āĻā§ āĻāĻā§āĻā§āĨ¤
āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻā§āĻ°āĻŋ
āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§ āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻāĨ¤
āĻāĻžāĻ°āĻŖ, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻā§
āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĢāĻžāĻāĻļāĻ¨ā§ āĻāĻ¨āĻĒā§āĻ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻŦāĻĄāĻŋ āĻĢāĻŋāĻĄ āĻāĻ°āĻŋ - āĻāĻāĻāĻĒā§āĻā§ āĻāĻŽāĻ°āĻž JSON āĻ
āĻŦāĻā§āĻā§āĻā§āĻ° āĻāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻ°āĻž āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻā§āĻ°āĻŋ āĻĒāĻžāĻāĨ¤
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻ āĻāĻžāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ āĻĻāĻŋāĻā§ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻāĻ¨ā§āĻĄā§āĻ¨ā§āĻ, āĻ°āĻ, āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻāĻžāĻ āĻ¤āĻž āĻĻāĻŋāĻ¯āĻŧā§ āĻ
āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¨āĻž, āĻāĻāĻŋ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°āĻ¯ā§āĻā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§ āĻāĻŽāĻ°āĻž āĻā§āĻŦā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻšāĻŦā§āĨ¤
āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ āĻā§āĻ¯āĻŧā§āĻ°āĻŋ āĻāĻŦāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻ¨ā§āĻĄ
āĻāĻāĻ¨ āĻĻā§āĻāĻž āĻ¯āĻžāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒā§ āĻ¯ā§ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ§āĻžāĻĒā§ āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻĒā§āĻ°āĻļā§āĻ¨āĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°ā§āĻāĻŋ āĻ¤āĻž āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ - āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻāĻāĻŋ CTE āĻāĻ āĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻŋ āĻĻā§āĻŦāĻžāĻ° āĻĒāĻĄāĻŧā§āĨ¤ āĻ¸ā§ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤
āĻā§āĻā§
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻ¸āĻšāĻāĻžāĻ°ā§ āĻĻā§āĻā§āĻ¨ āĻ¤āĻŦā§ 12 āĻ¤āĻŽ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻāĻā§ (āĻŦāĻž āĻāĻāĻŋ āĻĨā§āĻā§ āĻā§āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨ MATERIALIZED
) āĻāĻ āĻ¨
āĻāĻŦāĻ, āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻ˛, āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§ āĻā§āĻĨāĻžāĻ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ CTE āĻāĻ° āĻā§āĻ¨āĻžāĻ°ā§āĻļāĻ¨ āĻāĻŦāĻ āĻā§āĻĨāĻžāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻ¨ā§āĻĄ CTE
, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻā§āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°āĻāĻžāĻŦā§ "āĻ˛āĻĄāĻŧāĻžāĻ" āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
"āĻāĻāĻāĻŋ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻ¸āĻš" āĻāĻžāĻ¸ā§āĻāĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯: CTEs āĻ¨ā§āĻ¸ā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻā§āĻŦ āĻāĻžāĻ°āĻžāĻĒ āĻŦāĻžāĻ¸āĻž āĻāĻā§, āĻāĻŦāĻ āĻāĻŽāĻ¨āĻāĻŋ āĻāĻāĻ āĻ¨āĻžāĻŽ. āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻŋ āĻāĻŋāĻ¤āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ CTE A
āĻāĻ°āĻž CTE X
, āĻāĻŦāĻ āĻāĻŋāĻ¤āĻ°ā§ āĻāĻāĻ āĻ¸ā§āĻ¤āĻ°ā§ CTE B
āĻāĻŦāĻžāĻ° āĻāĻ° CTE X
:
WITH A AS (
WITH X AS (...)
SELECT ...
)
, B AS (
WITH X AS (...)
SELECT ...
)
...
āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻŋ āĻŦā§āĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ "āĻā§āĻ" āĻĻāĻŋāĻ¯āĻŧā§ āĻŦā§āĻāĻž āĻā§āĻŦ āĻāĻ āĻŋāĻ¨ - āĻāĻŽāĻ¨āĻāĻŋ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻĻā§āĻā§, āĻāĻŽāĻ¨āĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻļāĻ°ā§āĻ° āĻĻā§āĻā§āĻāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° CTE āĻā§āĻ¨āĻžāĻ°ā§āĻļāĻ¨ āĻāĻāĻŋāĻ˛ āĻšāĻ¯āĻŧ, āĻ¨ā§āĻ¸ā§āĻā§āĻĄ āĻšāĻ¯āĻŧ, āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻŦāĻĄāĻŧ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ āĻā§āĻ¤āĻ¨āĨ¤
āĻŽāĻŋāĻ˛āĻ¨
āĻāĻŽāĻžāĻĻā§āĻ° āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§ āĻāĻāĻāĻŋ āĻā§āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĨāĻžāĻāĻ˛ā§ UNION [ALL]
(āĻĻā§āĻāĻŋ āĻ¨āĻŽā§āĻ¨āĻž āĻ¯ā§āĻāĻĻāĻžāĻ¨ā§āĻ° āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°), āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ Append
, āĻ
āĻĨāĻŦāĻž āĻāĻŋāĻā§ Recursive Union
.
āĻ¯āĻž "āĻāĻĒāĻ°ā§" UNION
- āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨ā§āĻĄā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻ¨ā§āĻ¤āĻžāĻ¨, āĻ¯āĻž "āĻ¨ā§āĻ āĻĨā§āĻā§" - āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋāĨ¤ āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¯āĻĻāĻŋ UNION
āĻāĻŽāĻ°āĻž āĻāĻāĻ¸āĻžāĻĨā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻŦā§āĻ˛āĻ "āĻāĻ āĻž" āĻāĻ°ā§āĻāĻŋ, āĻ¤āĻžāĻ°āĻĒāĻ° Append
-āĻ¨ā§āĻĄā§āĻ° āĻāĻāĻ¨āĻ āĻā§āĻŦāĻ˛ āĻāĻāĻāĻŋāĻ āĻĨāĻžāĻāĻŦā§, āĻ¤āĻŦā§ āĻāĻāĻŋāĻ¤ā§ āĻĻā§āĻāĻŋ āĻ¸āĻ¨ā§āĻ¤āĻžāĻ¨ āĻĨāĻžāĻāĻŦā§ āĻ¨āĻž, āĻ¤āĻŦā§ āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻĨāĻžāĻāĻŦā§ - āĻ¯āĻĨāĻžāĻā§āĻ°āĻŽā§ āĻ¤āĻžāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻšāĻŦā§:
(...) -- #1
UNION ALL
(...) -- #2
UNION ALL
(...) -- #3
Append
-> ... #1
-> ... #2
-> ... #3
"āĻāĻāĻāĻŋ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻ¸āĻš" āĻāĻžāĻ¸ā§āĻ: āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤ āĻāĻ¨āĻž āĻĒā§āĻ°āĻāĻ¨ā§āĻŽā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ (WITH RECURSIVE
) āĻāĻāĻžāĻ§āĻŋāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ UNION
. āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻļā§āĻˇā§āĻ° āĻĒāĻ°ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻā§āĻŦāĻžāĻ°ā§ āĻļā§āĻˇ āĻŦā§āĻ˛āĻāĻāĻŋ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤ āĻšāĻ¯āĻŧ UNION
. āĻāĻĒāĻ°ā§āĻ° āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻ¨ā§āĻ¨ UNION
:
WITH RECURSIVE T AS(
(...) -- #1
UNION ALL
(...) -- #2, ŅŅŅ ĐēĐžĐŊŅĐ°ĐĩŅŅŅ ĐŗĐĩĐŊĐĩŅĐ°ŅиŅ ŅŅĐ°ŅŅОвОĐŗĐž ŅĐžŅŅĐžŅĐŊиŅ ŅĐĩĐēŅŅŅии
UNION ALL
(...) -- #3, ŅĐžĐģŅĐēĐž ŅŅĐžŅ ĐąĐģĐžĐē ŅĐĩĐēŅŅŅивĐŊŅĐš и ĐŧĐžĐļĐĩŅ ŅОдĐĩŅĐļĐ°ŅŅ ОйŅĐ°ŅĐĩĐŊиĐĩ Đē T
)
...
āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋāĻ "āĻĒā§āĻ¸ā§āĻ" āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻž āĻĻāĻ°āĻāĻžāĻ°āĨ¤ āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻĻā§āĻāĻ¤ā§ UNION
-āĻāĻŽāĻžāĻĻā§āĻ° āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§ āĻ¸ā§āĻāĻŽā§āĻ¨ā§āĻ āĻāĻŋāĻ˛ 3 āĻā§āĻāĻ°āĻžāĨ¤ āĻ¸ā§āĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻ UNION
āĻ
āĻ¨ā§āĻ°ā§āĻĒ Append
-āĻ¨ā§āĻĄ, āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ - Recursive Union
.
āĻ¤āĻĨā§āĻ¯-āĻĒāĻĄāĻŧā§āĻ¨
āĻ¸āĻŦāĻāĻŋāĻā§, āĻĒāĻžāĻĄāĻŧāĻž, āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻā§āĻ¨ āĻ āĻāĻļāĻāĻŋ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻā§āĻ¨ āĻ āĻāĻļā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ āĻāĻ āĻā§āĻāĻ°āĻžāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻšāĻā§āĻ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§ āĻ¸ā§āĻ āĻŦāĻ¸ā§āĻ¤ā§āĻā§āĻ˛āĻŋ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§āĻā§āĻ˛āĻŋ "āĻĒāĻ āĻ¨āĻ¯ā§āĻā§āĻ¯"āĨ¤
āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻŋāĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻŋ āĻ¨āĻž āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻŦāĻž āĻāĻāĻāĻŋ CTE, āĻ¤āĻŦā§ āĻ¤āĻžāĻ°āĻž āĻāĻāĻ āĻ¨ā§āĻĄ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ RangeVar
. āĻāĻŦāĻ "āĻĒāĻ āĻ¨āĻ¯ā§āĻā§āĻ¯" āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ¯āĻŧ, āĻāĻāĻŋ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻ¸ā§āĻŽāĻŋāĻ¤ āĻ¸ā§āĻ:
Seq Scan on [tbl]
Bitmap Heap Scan on [tbl]
Index [Only] Scan [Backward] using [idx] on [tbl]
CTE Scan on [cte]
Insert/Update/Delete on [tbl]
āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻžāĻ āĻžāĻŽā§ āĻāĻžāĻ¨āĻŋ, āĻāĻŽāĻ°āĻž āĻŦā§āĻ˛āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻŋāĻ āĻŋāĻĒāĻ¤ā§āĻ° āĻāĻžāĻ¨āĻŋ, āĻāĻŽāĻ°āĻž āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¨āĻžāĻŽ āĻāĻžāĻ¨āĻŋ - āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĻā§āĻŦā§āĻ¯āĻ°ā§āĻĨāĻšā§āĻ¨ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻŋāĨ¤
āĻāĻŦāĻžāĻ° āĻāĻžāĻ "āĻāĻāĻāĻŋ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§". āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŋ, āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻŋ, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻŽ āĻ¨ā§āĻ - āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ CTE āĻĨā§āĻā§ āĻĻā§āĻŦāĻžāĻ° āĻĒāĻĄāĻŧāĻŋāĨ¤
āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨āĻāĻž āĻĻā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ- āĻ
āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻā§? āĻā§āĻ¨ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻŽ āĻāĻā§? āĻāĻŽāĻ°āĻž āĻāĻāĻž āĻ
āĻ°ā§āĻĄāĻžāĻ° āĻāĻ°āĻŋāĻ¨āĻŋāĨ¤ āĻ¤āĻŋāĻ¨āĻŋ āĻā§āĻĨāĻž āĻĨā§āĻā§ āĻāĻ¤ "āĻ¸āĻāĻā§āĻ¯āĻž" āĻĒāĻžāĻ¨?
PostgreSQL āĻāĻāĻŋ āĻ¨āĻŋāĻā§āĻ āĻ¯ā§āĻ āĻāĻ°ā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§ āĻāĻāĻž āĻŦā§āĻāĻ¤ā§ āĻšāĻŦā§ āĻ āĻŋāĻ āĻ¯ā§āĻŽāĻ¨ āĻāĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻŽ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§, āĻāĻāĻŋāĻ° āĻā§āĻ¨ āĻŽāĻžāĻ¨ā§ āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻāĻāĻŋ āĻāĻāĻžāĻ¨ā§ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻ¤āĻžāĻ° āĻĻāĻŋāĻā§ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻ¨āĻž āĻĻā§āĻāĨ¤
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻāĻžāĻ "āĻāĻāĻāĻŋ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§": āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻžāĻāĻŋāĻ¤ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻĒāĻžāĻŦ Append
āĻŦāĻž Merge Append
, āĻ¯āĻž āĻāĻāĻāĻŋ āĻŦā§āĻšā§ āĻ¸āĻāĻā§āĻ¯āĻ "āĻļāĻŋāĻļā§" āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤ āĻšāĻŦā§, āĻāĻŦāĻ āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻāĻāĻŋ āĻāĻŋāĻā§ āĻšāĻŦā§ Scan
āĻā§āĻŦāĻŋāĻ˛-āĻŦāĻŋāĻāĻžāĻ āĻĨā§āĻā§ 'om: Seq Scan
, Bitmap Heap Scan
āĻŦāĻž Index Scan
. āĻ¤āĻŦā§, āĻ¯ā§ āĻā§āĻ¨āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻ "āĻļāĻŋāĻļā§āĻ°āĻž" āĻāĻāĻŋāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨ āĻšāĻŦā§ āĻ¨āĻž - āĻāĻāĻāĻžāĻŦā§ āĻāĻ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ Append
āĻ UNION
.
āĻāĻŽāĻ°āĻž āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻāĻŋāĻāĻāĻā§āĻ˛āĻŋāĻ āĻŦā§āĻāĻŋ, āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ˛āĻŋ "āĻāĻ āĻāĻžāĻĻāĻžāĻ¤ā§" āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°āĻŋ āĻāĻŦāĻ āĻŦāĻ˛āĻŋ: "āĻāĻĒāĻ¨āĻŋ āĻŽā§āĻāĻžāĻā§āĻŦāĻ˛ āĻĨā§āĻā§ āĻ¯āĻž āĻāĻŋāĻā§ āĻĒāĻĄāĻŧā§āĻā§āĻ¨ āĻ¤āĻž āĻāĻāĻžāĻ¨ā§ āĻāĻŦāĻ āĻāĻžāĻā§āĻ° āĻ¨āĻŋāĻā§ āĻ°āĻ¯āĻŧā§āĻā§".
"āĻ¸āĻšāĻ" āĻĄā§āĻāĻž āĻ āĻ§āĻŋāĻā§āĻ°āĻšāĻŖ āĻ¨ā§āĻĄ
Values Scan
āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻ
āĻ¨ā§āĻ°ā§āĻĒ VALUES
āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§
Result
āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ FROM
āĻŽāĻ¤ SELECT 1
. āĻ
āĻĨāĻŦāĻž āĻ¯āĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻ
āĻāĻŋāĻŦā§āĻ¯āĻā§āĻ¤āĻŋ āĻāĻā§ WHERE
-āĻŦā§āĻ˛āĻ āĻāĻ°ā§āĻ¨ (āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻāĻŋ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧ One-Time Filter
):
EXPLAIN ANALYZE
SELECT * FROM pg_class WHERE FALSE; -- иĐģи 0 = 1
Result (cost=0.00..0.00 rows=0 width=230) (actual time=0.000..0.000 rows=0 loops=1)
One-Time Filter: false
Function Scan
āĻāĻāĻ āĻ¨āĻžāĻŽā§āĻ° SRF-āĻ "Mapyatsya"āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¨ā§āĻ¸ā§āĻā§āĻĄ āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§, āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ - āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻ¤āĻžāĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧ āĻ¨āĻž InitPlan
/SubPlan
. āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻ¤āĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻŖāĻ¤ ... Join
āĻŦāĻž ... Anti Join
, āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻ¯āĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻ¨ āĻāĻŋāĻā§ āĻ˛ā§āĻā§āĻ¨ WHERE NOT EXISTS ...
. āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¨āĻ¯āĻŧ - āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻĒāĻžāĻ ā§āĻ¯ā§ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻā§āĻ¨āĻ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¨ā§āĻāĨ¤
āĻāĻŦāĻžāĻ° āĻāĻžāĻ "āĻāĻāĻāĻŋ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§": āĻāĻŋāĻā§ VALUES
āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ¯āĻŧ āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¨ā§āĻĄ āĻĒāĻžāĻŦā§āĻ¨ Values Scan
.
"āĻ¸āĻāĻā§āĻ¯āĻž" āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻ¯āĻŧāĻā§āĻ˛āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻāĻā§ āĻ
āĻĒāĻ°ā§āĻ° āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§ - āĻāĻāĻŋ āĻ āĻŋāĻ āĻ¸ā§āĻ āĻā§āĻ°āĻŽā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ VALUES
-āĻāĻĒāĻ° āĻĨā§āĻā§ āĻ¨āĻŋāĻ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ˛āĻāĨ¤
āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻžāĻ¤āĻāĻ°āĻŖ
āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻ¸āĻŦāĻāĻŋāĻā§āĻ āĻ¸āĻžāĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§ - āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° Limit
.
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻāĻžāĻ¨ā§ āĻ¸āĻšāĻ - āĻ¯ā§āĻŽāĻ¨ āĻ¨ā§āĻĄ Limit
, Sort
, Aggregate
, WindowAgg
, Unique
āĻ¤āĻžāĻ°āĻž āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ°āĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¯āĻŧāĻžāĻ¨-āĻā§-āĻāĻ¯āĻŧāĻžāĻ¨ "āĻŽā§āĻ¯āĻžāĻĒ" āĻāĻ°ā§, āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ°āĻž āĻ¸ā§āĻāĻžāĻ¨ā§ āĻĨāĻžāĻā§āĨ¤ āĻā§āĻ¨ "āĻ¤āĻžāĻ°āĻāĻž" āĻāĻŦāĻ āĻā§āĻ¨ āĻ
āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨ā§āĻāĨ¤
JOIN
āĻāĻŽāĻ°āĻž āĻ¯āĻāĻ¨ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¤āĻāĻ¨ āĻ
āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻā§āĻāĻž āĻĻā§āĻ¯āĻŧ JOIN
āĻ¨āĻŋāĻā§āĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŽā§āĻāĻŦ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦāĨ¤
āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻāĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻāĻā§ JoinExpr
, āĻ¯āĻžāĻ° āĻ āĻŋāĻ āĻĻā§āĻāĻŋ āĻ¸āĻ¨ā§āĻ¤āĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ - āĻŦāĻžāĻŽ āĻāĻŦāĻ āĻĄāĻžāĻ¨āĨ¤ āĻāĻāĻŋ, āĻ¯āĻĨāĻžāĻā§āĻ°āĻŽā§, āĻāĻĒāĻ¨āĻžāĻ° āĻ¯ā§āĻāĻĻāĻžāĻ¨ā§āĻ° "āĻāĻĒāĻ°ā§" āĻāĻŦāĻ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§āĻ¤ā§ "āĻ¨ā§āĻā§" āĻ¯āĻž āĻ˛ā§āĻāĻž āĻāĻā§ āĻ¤āĻžāĨ¤
āĻāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻĻāĻŋāĻ āĻĨā§āĻā§ āĻāĻ°āĻž āĻĻā§āĻāĻ¨ āĻāĻžāĻ°ā§ āĻāĻžāĻ°ā§ āĻŦāĻāĻļāĻ§āĻ° * Loop
/* Join
-āĻ¨ā§āĻĄāĨ¤ Nested Loop
, Hash Anti Join
... āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻ¸āĻšāĻ āĻ˛āĻāĻŋāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ: āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦāĻŋāĻ˛ A ââāĻāĻŦāĻ B āĻĨāĻžāĻā§ āĻ¯āĻž āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ¯āĻŧ āĻāĻā§ āĻ
āĻĒāĻ°āĻā§ "āĻ¯ā§āĻāĻĻāĻžāĻ¨" āĻāĻ°ā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§āĻ¤ā§ āĻ¤āĻžāĻ°āĻž āĻāĻāĻ¯āĻŧāĻ āĻ
āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ A-JOIN-B
, āĻŦāĻž B-JOIN-A
. āĻāĻ° āĻŽāĻ¤ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ, āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨, āĻāĻŦāĻ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻā§āĻĄāĻŧāĻž āĻĢā§āĻ°āĻŋāĻ¯āĻŧā§ āĻ¨āĻž āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻā§āĻ°āĻŋ āĻ¨āĻŋāĻ¨, āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻ¨āĻŋāĻ¨, āĻ¤āĻžāĻĻā§āĻ° āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻ¨... āĻāĻāĻž āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻ¨āĻž!
āĻā§āĻ°āĻžāĻĢ āĻāĻāĻžāĻ°ā§ āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻāĻāĻž āĻ¯āĻžāĻ - āĻāĻš, āĻāĻŋāĻā§ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻŋāĻā§ āĻ
āĻ¨ā§āĻ°ā§āĻĒ āĻšāĻ¯āĻŧā§ āĻā§āĻā§!
āĻāĻ¸ā§āĻ¨ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻž āĻ¯āĻžāĻ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨ā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻļāĻŋāĻļā§ B āĻāĻŦāĻ C āĻ°āĻ¯āĻŧā§āĻā§ - āĻāĻāĻŋ āĻā§āĻ¨ āĻā§āĻ°āĻŽā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻŦāĻŋāĻŦā§āĻā§āĻ¯ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ¸ā§āĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¨ā§āĻĄā§āĻ° āĻāĻŦāĻŋ āĻĢā§āĻ˛āĻŋāĻĒ āĻāĻ°āĻŋāĨ¤
āĻāĻŦāĻžāĻ° āĻĻā§āĻāĻž āĻ¯āĻžāĻ. āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻļāĻŋāĻļā§āĻĻā§āĻ° A āĻāĻŦāĻ āĻā§āĻĄāĻŧāĻž (B + C) āĻ¸āĻš āĻ¨ā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§ - āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖāĨ¤
āĻĻāĻžāĻ°ā§āĻŖ! āĻĻā§āĻāĻž āĻ¯āĻžāĻā§āĻā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻĻā§āĻāĻ¨ JOIN
āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĨā§āĻā§ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻšāĻžāĻ¯āĻŧ, āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž.
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¯āĻĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ A JOIN B JOIN C
, āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ¯āĻŧ, "āĻāĻ°āĻŽ" āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ A āĻāĻŦāĻ C āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻŋāĻ˛ā§ˇ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻ¯āĻŧā§āĻ°āĻŋāĻ¤ā§ āĻāĻŽāĻ¨ āĻā§āĻ¨āĻ āĻ
āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¨ā§āĻ, āĻāĻŽāĻžāĻĻā§āĻ° āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻāĻŋāĻā§ āĻ¨ā§āĻ, āĻāĻā§āĻāĻŋāĻ¤āĻāĻŋ āĻāĻŦāĻĻā§āĻ§ āĻāĻ°āĻžāĻ° āĻāĻŋāĻā§ āĻ¨ā§āĻā§ˇ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ āĻ˛āĻŋāĻāĻŦā§āĻ¨ āĻ¤āĻāĻ¨ "āĻāĻŽāĻž" āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻ A, B
.
āĻ¤āĻŦā§, āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ "āĻāĻ¨āĻāĻžāĻ" āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻ¸āĻŽāĻ¯āĻŧāĻŽāĻ¤ā§ āĻŦāĻžāĻŽ āĻĻāĻŋāĻā§ āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛āĻŋāĻ āĻĒā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°ā§ - āĻāĻā§āĻˇāĻ°āĻŋāĻ āĻ
āĻ°ā§āĻĨā§, āĻā§āĻāĻ˛ āĻā§āĻ°ā§āĻŽā§āĻ° āĻŽāĻ¤ā§, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻāĻ¨ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻā§āĻĄ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻ¤āĻā§āĻˇāĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ˛āĻžāĻāĻ¨ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦāĻŋāĻŦā§āĻ¤āĻŋ "āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻŋāĻ¤"āĨ¤
āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¸āĻšāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ°ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ
āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻ
āĻĒāĻ āĻ¨āĻ¯ā§āĻā§āĻ¯ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ¨āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨
āĻāĻ¤ā§āĻ¸: www.habr.com