PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ¯āĻžāĻ°āĻž āĻ†āĻ—ā§‡ āĻĨā§‡āĻ•ā§‡āĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž.tensor.ru - āĻ†āĻŽāĻžāĻĻā§‡āĻ° PostgreSQL āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻ­āĻŋāĻœā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻĒāĻžāĻ° āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¸āĻšā§‡āĻ¤āĻ¨ āĻ¨āĻžāĻ“ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ - āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ˛āĻ—ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ•āĻ āĻŋāĻ¨-āĻĒāĻ āĻ¨ āĻ…āĻ‚āĻļ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻ¤ā§‡ ...

PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡
â€Ļ āĻĒā§āĻ°āĻžāĻ¸āĻ™ā§āĻ—āĻŋāĻ• āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻ¨ā§‹āĻĄāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¸āĻ™ā§āĻ—āĻŋāĻ• āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻ­āĻžāĻŦā§‡ āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡:

PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡
āĻ¤āĻžāĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ–āĻŖā§āĻĄā§‡āĻ° āĻāĻ‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§‡ āĻĄ PGConf.Russia 2020 āĻ āĻ°āĻŋāĻĒā§‹āĻ°ā§āĻŸ āĻ†āĻŽāĻ°āĻž āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡āĻ›āĻŋ āĻ¤āĻž āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦāĻ˛āĻŦāĨ¤

āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ‚āĻļā§‡āĻ° āĻŸā§āĻ°āĻžāĻ¨ā§āĻ¸āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻ¤ā§āĻ¸āĻ°ā§āĻ—ā§€āĻ•ā§ƒāĻ¤, āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡ "āĻ…āĻ¸ā§āĻ¸ā§āĻĨ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ°ā§‡āĻ¸āĻŋāĻĒāĻŋ".



āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻ¸ā§āĻ¨ āĻ°āĻ™ āĻ•āĻ°āĻž āĻ¯āĻžāĻ• - āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ†āĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻŸāĻŋ āĻ°āĻ™ āĻ•āĻ°āĻŦ āĻ¨āĻž, āĻ†āĻŽāĻ°āĻž āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ†āĻāĻ•āĻž āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻāĻŸāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ¸ā§āĻ¨ā§āĻĻāĻ° āĻāĻŦāĻ‚ āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯, āĻ¤āĻŦā§‡ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĨ¤

āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸āĻšā§€āĻ¨ "āĻļā§€āĻŸ" āĻ¸āĻš āĻ˛āĻ— āĻĨā§‡āĻ•ā§‡ āĻŸā§‡āĻ¨ā§‡ āĻ†āĻ¨āĻž āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻŸāĻŋ āĻ–ā§āĻŦ āĻ•ā§āĻļā§āĻ°ā§€ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ‡ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻĻā§‡āĻ–āĻžāĻšā§āĻ›ā§‡āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻŦāĻŋāĻļā§‡āĻˇāĻ¤ āĻ¯āĻ–āĻ¨ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°āĻ°āĻž āĻ•ā§‹āĻĄā§‡ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻŦāĻĄāĻŋāĻŸāĻŋāĻ•ā§‡ "āĻ†āĻ āĻž" āĻ•āĻ°ā§‡ (āĻāĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻŸāĻŋ-āĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ˜āĻŸā§‡) āĻāĻ• āĻ˛āĻžāĻ‡āĻ¨ā§‡āĨ¤ āĻŦāĻŋāĻ­ā§€āĻˇāĻŋāĻ•āĻž !

āĻ†āĻ¸ā§āĻ¨ āĻāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ°āĻ“ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻ­āĻžāĻŦā§‡ āĻ†āĻāĻ•ā§āĻ¨āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ•ā§‡ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻ­āĻžāĻŦā§‡ āĻ†āĻāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¸ā§āĻŸ āĻŦāĻĄāĻŋāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤ "āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤" āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ - āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡ āĻ•ā§€ āĻ˜āĻŸā§‡āĻ›ā§‡āĨ¤

āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻŸā§āĻ°āĻŋ

āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻŸāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ•āĻžāĻ°āĻŖ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ†āĻ›ā§‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻŽā§‚āĻ˛ NodeJS āĻ āĻšāĻ˛ā§‡, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŽāĻĄāĻŋāĻ‰āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ—āĻŋāĻĨā§āĻŦā§‡ āĻāĻŸāĻŋ āĻ–ā§āĻāĻœā§āĻ¨. āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, āĻāĻ—ā§āĻ˛āĻŋ PostgreSQL āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ°ā§‡āĻ° āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻ…āĻ‚āĻļā§‡ āĻŦāĻ°ā§āĻ§āĻŋāĻ¤ "āĻŦāĻžāĻ‡āĻ¨ā§āĻĄāĻŋāĻ‚"āĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻŦā§āĻ¯āĻžāĻ•āĻ°āĻŖāĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻ¸āĻ‚āĻ•āĻ˛āĻŋāĻ¤ āĻāĻŦāĻ‚ NodeJS āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻŸāĻŋāĻ¤ā§‡ āĻŦāĻžāĻ‡āĻ¨ā§āĻĄāĻŋāĻ‚ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨ā§āĻ¯ āĻ˛ā§‹āĻ•ā§‡āĻ° āĻŽāĻĄāĻŋāĻ‰āĻ˛āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ - āĻāĻ–āĻžāĻ¨ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻŦāĻĄāĻŧ āĻ—ā§‹āĻĒāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻ¨ā§‡āĻ‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻ‡āĻ¨āĻĒā§āĻŸ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻŦāĻĄāĻŋ āĻĢāĻŋāĻĄ āĻ•āĻ°āĻŋ - āĻ†āĻ‰āĻŸāĻĒā§āĻŸā§‡ āĻ†āĻŽāĻ°āĻž JSON āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻ†āĻ•āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ°ā§āĻ¸ āĻ•āĻ°āĻž āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻŸā§āĻ°āĻŋ āĻĒāĻžāĻ‡āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ—āĻžāĻ›ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ āĻĻāĻŋāĻ•ā§‡ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻ‡āĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸ, āĻ°āĻ™, āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻšāĻžāĻ‡ āĻ¤āĻž āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻŸāĻŋ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¨āĻž, āĻāĻŸāĻŋ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻ­ā§‡āĻŦā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻšāĻŦā§‡āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ‚ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ āĻāĻŦāĻ‚ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻ¨ā§‹āĻĄ

āĻāĻ–āĻ¨ āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻ• āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒā§‡ āĻ¯ā§‡ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻŸāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ§āĻžāĻĒā§‡ āĻ†āĻŽāĻ°āĻž āĻ¯ā§‡ āĻĒā§āĻ°āĻļā§āĻ¨āĻŸāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¤āĻž āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ• - āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ CTE āĻ—āĻ āĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻĻā§āĻŦāĻžāĻ° āĻĒāĻĄāĻŧā§‡āĨ¤ āĻ¸ā§‡ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ•ā§‹āĻŸā§‡

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻ¸āĻšāĻ•āĻžāĻ°ā§‡ āĻĻā§‡āĻ–ā§‡āĻ¨ āĻ¤āĻŦā§‡ 12 āĻ¤āĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ†āĻ—ā§‡ (āĻŦāĻž āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻ•ā§€āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§āĻ¨ MATERIALIZED) āĻ—āĻ āĻ¨ CTE āĻļāĻŋāĻĄāĻŋāĻ‰āĻ˛āĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻƒāĻļāĻ°ā§āĻ¤ āĻŦāĻžāĻ§āĻž.
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻāĻŦāĻ‚, āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛, āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡ āĻ•ā§‹āĻĨāĻžāĻ“ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ‡ CTE āĻāĻ° āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§‹āĻĨāĻžāĻ“ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻ¨ā§‹āĻĄ CTE, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ‡ āĻ¨ā§‹āĻĄāĻ—ā§āĻ˛āĻŋ āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ°āĻ­āĻžāĻŦā§‡ "āĻ˛āĻĄāĻŧāĻžāĻ‡" āĻ•āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

"āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ°āĻ•āĻžāĻšāĻŋāĻšā§āĻ¨ āĻ¸āĻš" āĻŸāĻžāĻ¸ā§āĻ•āĻĻā§āĻ°āĻˇā§āĻŸāĻŦā§āĻ¯: CTEs āĻ¨ā§‡āĻ¸ā§āĻŸ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡
āĻ–ā§āĻŦ āĻ–āĻžāĻ°āĻžāĻĒ āĻŦāĻžāĻ¸āĻž āĻ†āĻ›ā§‡, āĻāĻŦāĻ‚ āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻ•āĻ‡ āĻ¨āĻžāĻŽ. āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ 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.
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ¯āĻž "āĻ‰āĻĒāĻ°ā§‡" 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.
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ¤āĻĨā§āĻ¯-āĻĒāĻĄāĻŧā§āĻ¨

āĻ¸āĻŦāĻ•āĻŋāĻ›ā§, āĻĒāĻžāĻĄāĻŧāĻž, āĻāĻ–āĻ¨ āĻ†āĻŽāĻ°āĻž āĻœāĻžāĻ¨āĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ•ā§‹āĻ¨ āĻ…āĻ‚āĻļāĻŸāĻŋ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ āĻ…āĻ‚āĻļā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛ā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŦāĻ‚ āĻāĻ‡ āĻŸā§āĻ•āĻ°āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻšāĻœā§‡āĻ‡ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ¸ā§‡āĻ‡ āĻŦāĻ¸ā§āĻ¤ā§āĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋ "āĻĒāĻ āĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯"āĨ¤

āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻŸāĻŋāĻ° āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ•ā§‹āĻŖ āĻĨā§‡āĻ•ā§‡, āĻ†āĻŽāĻ°āĻž āĻœāĻžāĻ¨āĻŋ āĻ¨āĻž āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻŦāĻž āĻāĻ•āĻŸāĻŋ 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]

āĻ†āĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻœāĻžāĻ¨āĻŋ, āĻ†āĻŽāĻ°āĻž āĻŦā§āĻ˛āĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻšāĻŋāĻ āĻŋāĻĒāĻ¤ā§āĻ° āĻœāĻžāĻ¨āĻŋ, āĻ†āĻŽāĻ°āĻž āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¨āĻžāĻŽ āĻœāĻžāĻ¨āĻŋ - āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻĻā§āĻŦā§āĻ¯āĻ°ā§āĻĨāĻšā§€āĻ¨ āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻŋāĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ†āĻŦāĻžāĻ° āĻ•āĻžāĻœ "āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ°āĻ•āĻžāĻšāĻŋāĻšā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§‡". āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻŋ, āĻāĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻŋ, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§‹āĻ¨ā§‹ āĻ‰āĻĒāĻ¨āĻžāĻŽ āĻ¨ā§‡āĻ‡ - āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ CTE āĻĨā§‡āĻ•ā§‡ āĻĻā§āĻŦāĻžāĻ° āĻĒāĻĄāĻŧāĻŋāĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨āĻŸāĻž āĻĻā§‡āĻ–ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ•- āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ•ā§€? āĻ•ā§‡āĻ¨ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¨āĻžāĻŽ āĻ†āĻ›ā§‡? āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻž āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻŋāĻ¨āĻŋāĨ¤ āĻ¤āĻŋāĻ¨āĻŋ āĻ•ā§‹āĻĨāĻž āĻĨā§‡āĻ•ā§‡ āĻāĻ¤ "āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž" āĻĒāĻžāĻ¨?

PostgreSQL āĻāĻŸāĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§ āĻāĻŸāĻž āĻŦā§āĻāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ āĻŋāĻ• āĻ¯ā§‡āĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¨āĻžāĻŽ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ‰āĻĻā§āĻĻā§‡āĻļā§āĻ¯ā§‡, āĻāĻŸāĻŋāĻ° āĻ•ā§‹āĻ¨ āĻŽāĻžāĻ¨ā§‡ āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻāĻŸāĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻ¤āĻžāĻ° āĻĻāĻŋāĻ•ā§‡ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻ¨āĻž āĻĻā§‡āĻ‡āĨ¤

āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ•āĻžāĻœ "āĻāĻ•āĻŸāĻŋ āĻ¤āĻžāĻ°āĻ•āĻžāĻšāĻŋāĻšā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§‡": āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ­āĻžāĻœāĻŋāĻ¤ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻŋ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¨ā§‹āĻĄ āĻĒāĻžāĻŦ Append āĻŦāĻž Merge Append, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻŦā§ƒāĻšā§Ž āĻ¸āĻ‚āĻ–ā§āĻ¯āĻ• "āĻļāĻŋāĻļā§" āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ—āĻ āĻŋāĻ¤ āĻšāĻŦā§‡, āĻāĻŦāĻ‚ āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•āĻŸāĻŋ āĻ•āĻŋāĻ›ā§ āĻšāĻŦā§‡ ScanāĻŸā§‡āĻŦāĻŋāĻ˛-āĻŦāĻŋāĻ­āĻžāĻ— āĻĨā§‡āĻ•ā§‡ 'om: Seq Scan, Bitmap Heap Scan āĻŦāĻž Index Scan. āĻ¤āĻŦā§‡, āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻ‡ "āĻļāĻŋāĻļā§āĻ°āĻž" āĻœāĻŸāĻŋāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨ āĻšāĻŦā§‡ āĻ¨āĻž - āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻāĻ‡ āĻ¨ā§‹āĻĄāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ Append āĻ UNION.
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ—āĻŋāĻāĻŸāĻ—ā§āĻ˛āĻŋāĻ“ āĻŦā§āĻāĻŋ, āĻ†āĻŽāĻ°āĻž āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ "āĻāĻ• āĻ—āĻžāĻĻāĻžāĻ¤ā§‡" āĻ¸āĻ‚āĻ—ā§āĻ°āĻš āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻŦāĻ˛āĻŋ: "āĻ†āĻĒāĻ¨āĻŋ āĻŽā§‡āĻ—āĻžāĻŸā§‡āĻŦāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ¯āĻž āĻ•āĻŋāĻ›ā§ āĻĒāĻĄāĻŧā§‡āĻ›ā§‡āĻ¨ āĻ¤āĻž āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻŦāĻ‚ āĻ—āĻžāĻ›ā§‡āĻ° āĻ¨āĻŋāĻšā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡".

"āĻ¸āĻšāĻœ" āĻĄā§‡āĻŸāĻž āĻ…āĻ§āĻŋāĻ—ā§āĻ°āĻšāĻŖ āĻ¨ā§‹āĻĄ

PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

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.
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

"āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž" āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻ¯āĻŧāĻ—ā§āĻ˛āĻŋ āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•ā§‡ āĻ…āĻĒāĻ°ā§‡āĻ° āĻĨā§‡āĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻŦā§‡ - āĻāĻŸāĻŋ āĻ āĻŋāĻ• āĻ¸ā§‡āĻ‡ āĻ•ā§āĻ°āĻŽā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ VALUES-āĻ‰āĻĒāĻ° āĻĨā§‡āĻ•ā§‡ āĻ¨āĻŋāĻš āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ˛āĻ•āĨ¤

āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻœāĻžāĻ¤āĻ•āĻ°āĻŖ

āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻ¸āĻŦāĻ•āĻŋāĻ›ā§āĻ‡ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ - āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° Limit.
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻāĻ–āĻžāĻ¨ā§‡ āĻ¸āĻšāĻœ - āĻ¯ā§‡āĻŽāĻ¨ āĻ¨ā§‹āĻĄ Limit, Sort, Aggregate, WindowAgg, Unique āĻ¤āĻžāĻ°āĻž āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ“āĻ¯āĻŧāĻžāĻ¨-āĻŸā§-āĻ“āĻ¯āĻŧāĻžāĻ¨ "āĻŽā§āĻ¯āĻžāĻĒ" āĻ•āĻ°ā§‡, āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ°āĻž āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĨāĻžāĻ•ā§‡āĨ¤ āĻ•ā§‹āĻ¨ "āĻ¤āĻžāĻ°āĻ•āĻž" āĻāĻŦāĻ‚ āĻ•ā§‹āĻ¨ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨ā§‡āĻ‡āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

JOIN

āĻ†āĻŽāĻ°āĻž āĻ¯āĻ–āĻ¨ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¤āĻ–āĻ¨ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻ¯āĻŧ JOIN āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŽā§āĻ­āĻŦ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻāĻ° āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ•ā§‹āĻŖ āĻĨā§‡āĻ•ā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨ā§‹āĻĄ āĻ†āĻ›ā§‡ JoinExpr, āĻ¯āĻžāĻ° āĻ āĻŋāĻ• āĻĻā§āĻŸāĻŋ āĻ¸āĻ¨ā§āĻ¤āĻžāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻŦāĻžāĻŽ āĻāĻŦāĻ‚ āĻĄāĻžāĻ¨āĨ¤ āĻāĻŸāĻŋ, āĻ¯āĻĨāĻžāĻ•ā§āĻ°āĻŽā§‡, āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ā§‡āĻ° "āĻ‰āĻĒāĻ°ā§‡" āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻ¤ā§‡ "āĻ¨ā§€āĻšā§‡" āĻ¯āĻž āĻ˛ā§‡āĻ–āĻž āĻ†āĻ›ā§‡ āĻ¤āĻžāĨ¤

āĻ†āĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻĻāĻŋāĻ• āĻĨā§‡āĻ•ā§‡ āĻāĻ°āĻž āĻĻā§āĻœāĻ¨ āĻ•āĻžāĻ°ā§‹ āĻ•āĻžāĻ°ā§‹ āĻŦāĻ‚āĻļāĻ§āĻ° * Loop/* Join-āĻ¨ā§‹āĻĄāĨ¤ Nested Loop, Hash Anti Join... āĻāĻ°āĻ•āĻŽ āĻ•āĻŋāĻ›ā§āĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻšāĻœ āĻ˛āĻœāĻŋāĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋ: āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŸā§‡āĻŦāĻŋāĻ˛ A ​​āĻāĻŦāĻ‚ B āĻĨāĻžāĻ•ā§‡ āĻ¯āĻž āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ¯āĻŧ āĻāĻ•ā§‡ āĻ…āĻĒāĻ°āĻ•ā§‡ "āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨" āĻ•āĻ°ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻ¤ā§‡ āĻ¤āĻžāĻ°āĻž āĻ‰āĻ­āĻ¯āĻŧāĻ‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ A-JOIN-B, āĻŦāĻž B-JOIN-A. āĻāĻ° āĻŽāĻ¤ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ•, āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ āĻ‰āĻĒāĻžāĻ¯āĻŧā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§āĻ¨, āĻāĻŦāĻ‚ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻœā§‹āĻĄāĻŧāĻž āĻĢā§āĻ°āĻŋāĻ¯āĻŧā§‡ āĻ¨āĻž āĻ¯āĻžāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤āĨ¤

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻŸā§āĻ°āĻŋ āĻ¨āĻŋāĻ¨, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ¨āĻŋāĻ¨, āĻ¤āĻžāĻĻā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¤āĻžāĻ•āĻžāĻ¨... āĻāĻŸāĻž āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻ¨āĻž!
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ—ā§āĻ°āĻžāĻĢ āĻ†āĻ•āĻžāĻ°ā§‡ āĻāĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ†āĻāĻ•āĻž āĻ¯āĻžāĻ• - āĻ“āĻš, āĻ•āĻŋāĻ›ā§ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ•āĻŋāĻ›ā§ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡!
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ†āĻ¸ā§āĻ¨ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°āĻž āĻ¯āĻžāĻ• āĻ¯ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨ā§‹āĻĄ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻļāĻŋāĻļā§ B āĻāĻŦāĻ‚ C āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻāĻŸāĻŋ āĻ•ā§‹āĻ¨ āĻ•ā§āĻ°āĻŽā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻŦāĻŋāĻŦā§‡āĻšā§āĻ¯ āĻ¨āĻ¯āĻŧāĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ¨ā§‹āĻĄā§‡āĻ° āĻ›āĻŦāĻŋ āĻĢā§āĻ˛āĻŋāĻĒ āĻ•āĻ°āĻŋāĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ†āĻŦāĻžāĻ° āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻ•. āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻļāĻŋāĻļā§āĻĻā§‡āĻ° A āĻāĻŦāĻ‚ āĻœā§‹āĻĄāĻŧāĻž (B + C) āĻ¸āĻš āĻ¨ā§‹āĻĄ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖāĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻĻāĻžāĻ°ā§āĻŖ! āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻšā§āĻ›ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻĻā§āĻœāĻ¨ JOIN āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ¨ā§‹āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻšāĻžāĻ¯āĻŧ, āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž.
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ¯āĻĻāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ A JOIN B JOIN C, āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ¯āĻŧ, "āĻšāĻ°āĻŽ" āĻ¨ā§‹āĻĄāĻ—ā§āĻ˛āĻŋ A āĻāĻŦāĻ‚ C āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ›āĻŋāĻ˛ā§ˇ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋāĻ¤ā§‡ āĻāĻŽāĻ¨ āĻ•ā§‹āĻ¨āĻ“ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻ¨ā§‡āĻ‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻšāĻžāĻ‡āĻ˛āĻžāĻ‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ¨ā§‡āĻ‡, āĻ‡āĻ™ā§āĻ—āĻŋāĻ¤āĻŸāĻŋ āĻ†āĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ¨ā§‡āĻ‡ā§ˇ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻ˛āĻŋāĻ–āĻŦā§‡āĻ¨ āĻ¤āĻ–āĻ¨ "āĻ•āĻŽāĻž" āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻ‡ A, B.

āĻ¤āĻŦā§‡, āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨ā§‹āĻĄāĻ—ā§āĻ˛āĻŋ "āĻ†āĻ¨āĻŸāĻžāĻ‡" āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¸āĻŽāĻ¯āĻŧāĻŽāĻ¤ā§‹ āĻŦāĻžāĻŽ āĻĻāĻŋāĻ•ā§‡ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻŋāĻ‚ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°ā§‡ - āĻ†āĻ•ā§āĻˇāĻ°āĻŋāĻ• āĻ…āĻ°ā§āĻĨā§‡, āĻ—ā§āĻ—āĻ˛ āĻ•ā§āĻ°ā§‹āĻŽā§‡āĻ° āĻŽāĻ¤ā§‹, āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•ā§‹āĻĄ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°ā§‡āĻ¨āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ•āĻ¤āĻ•ā§āĻˇāĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¨ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŦāĻŋāĻŦā§ƒāĻ¤āĻŋ "āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻŋāĻ¤"āĨ¤
PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¸āĻšāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻ°āĻž āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻŦāĻž āĻ•āĻžāĻ°āĻ“ āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ™ā§āĻ• āĻ­āĻžāĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ā§ˇ

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻ†āĻ•āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻĒāĻ āĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ†āĻ¨āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° "āĻ¨āĻ°āĻŽāĻžāĻ˛āĻžāĻ‡āĻœāĻžāĻ°".

PostgreSQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛āĻžāĻ°: āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨ āĻāĻŦāĻ‚ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§‡āĻ˛ā§‡

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨