PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒ‘แƒ”แƒ•แƒ แƒ˜, แƒ•แƒ˜แƒœแƒช แƒฃแƒ™แƒ•แƒ” แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ—.tensor.ru - แƒฉแƒ•แƒ”แƒœแƒ›แƒ PostgreSQL แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ•แƒ˜แƒ–แƒฃแƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ›แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ˜แƒชแƒแƒ“แƒ”แƒก แƒ›แƒ˜แƒกแƒ˜ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ–แƒ”แƒกแƒแƒฎแƒ”แƒšแƒ›แƒฌแƒ˜แƒคแƒ - แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒซแƒœแƒ”แƒšแƒแƒ“ แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ’แƒแƒ“แƒแƒฅแƒชแƒ”แƒ•แƒ...

PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ
... แƒšแƒแƒ›แƒแƒ–แƒแƒ“ แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒš แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒจแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒฃแƒ แƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ
แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ”แƒแƒ แƒ” แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒแƒ› แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒจแƒ˜ แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜ PGConf.Russia 2020-แƒ–แƒ” แƒ›แƒ” แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒ•แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ— แƒ”แƒก.

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒขแƒ แƒแƒœแƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒซแƒฆแƒ•แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒฃแƒ  แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒก แƒ“แƒ แƒ›แƒแƒ— แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ "แƒ แƒ”แƒชแƒ”แƒžแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒแƒแƒ•แƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ SQL แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก".



แƒฏแƒ”แƒ  แƒ›แƒแƒคแƒ”แƒ แƒ”แƒ‘แƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— - แƒ“แƒ แƒ’แƒ”แƒ’แƒ›แƒแƒก แƒแƒฆแƒแƒ  แƒ’แƒแƒ•แƒแƒคแƒ”แƒ แƒแƒ“แƒ”แƒ‘แƒ—, แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ•แƒแƒคแƒ”แƒ แƒแƒ“แƒ”แƒ—, แƒฃแƒ™แƒ•แƒ” แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒšแƒแƒ›แƒแƒ–แƒ˜ แƒ“แƒ แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฎแƒแƒ•แƒœแƒ.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ, แƒ แƒแƒ› แƒแƒกแƒ”แƒ—แƒ˜ แƒแƒ แƒแƒคแƒแƒ แƒ›แƒแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ โ€žแƒคแƒฃแƒ แƒชแƒšแƒ˜แƒ—โ€œ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒ“แƒแƒœ แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒฎแƒ˜แƒœแƒฏแƒ˜ แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒ›แƒแƒฃแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฉแƒแƒœแƒก.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜ โ€žแƒฌแƒ”แƒ‘แƒ”แƒ‘แƒ”แƒœโ€œ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒก แƒ™แƒแƒ“แƒจแƒ˜ (แƒ”แƒก, แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒแƒœแƒขแƒ˜แƒžแƒแƒขแƒ”แƒ แƒœแƒแƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒฎแƒ“แƒ”แƒ‘แƒ) แƒ”แƒ แƒ— แƒฎแƒแƒ–แƒ–แƒ”. แƒกแƒแƒจแƒ˜แƒœแƒ”แƒšแƒ”แƒ‘แƒแƒ!

แƒ”แƒก แƒ แƒแƒ’แƒแƒ แƒ›แƒ” แƒฃแƒคแƒ แƒ แƒšแƒแƒ›แƒแƒ–แƒแƒ“ แƒ“แƒแƒ•แƒฎแƒแƒขแƒแƒ—.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒ“แƒ แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ”แƒก แƒšแƒแƒ›แƒแƒ–แƒแƒ“ แƒ“แƒแƒ•แƒฎแƒแƒขแƒแƒ—, แƒแƒœแƒฃ แƒ“แƒแƒ•แƒจแƒแƒšแƒแƒ— แƒ“แƒ แƒ“แƒแƒ•แƒแƒ‘แƒ แƒฃแƒœแƒแƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒกแƒฎแƒ”แƒฃแƒšแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒแƒ› แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒก โ€žแƒ›แƒ˜แƒ•แƒฃแƒ›แƒแƒ’แƒ แƒแƒ—โ€œ แƒ›แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ - แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒจแƒ˜.

แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒ˜แƒก แƒฎแƒ”

แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฏแƒ”แƒ  แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ“แƒ”แƒก.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒ แƒแƒ“แƒ’แƒแƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก NodeJS-แƒ–แƒ”, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ›แƒแƒ“แƒฃแƒšแƒ˜, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒžแƒแƒ•แƒ”แƒ— แƒ˜แƒ’แƒ˜ GitHub-แƒ–แƒ”. แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ’แƒแƒคแƒแƒ แƒ—แƒแƒ”แƒ‘แƒฃแƒšแƒ˜ โ€žแƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒโ€œ แƒ—แƒแƒ•แƒแƒ“ PostgreSQL แƒžแƒแƒ แƒกแƒ”แƒ แƒ˜แƒก แƒจแƒ˜แƒ“แƒ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ—แƒแƒœ. แƒแƒœแƒฃ, แƒ’แƒ แƒแƒ›แƒแƒขแƒ˜แƒ™แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒ˜แƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ“แƒ แƒ›แƒแƒกแƒ–แƒ” แƒแƒ™แƒ˜แƒœแƒซแƒ•แƒ แƒฎแƒ“แƒ”แƒ‘แƒ NodeJS-แƒ“แƒแƒœ. แƒฉแƒ•แƒ”แƒœ แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒแƒ“ แƒแƒ•แƒ˜แƒฆแƒ”แƒ— แƒกแƒฎแƒ•แƒ˜แƒกแƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ - แƒแƒฅ แƒ“แƒ˜แƒ“แƒ˜ แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒ แƒแƒ  แƒแƒ แƒ˜แƒก.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ™แƒ•แƒ”แƒ‘แƒแƒ•แƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒกแƒฎแƒ”แƒฃแƒšแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก แƒฉแƒ•แƒ”แƒœแƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒจแƒ˜ - แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ–แƒ” แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒš แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒฃแƒ  แƒฎแƒ”แƒก JSON แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒแƒ— แƒแƒ› แƒฎแƒ”แƒก แƒกแƒแƒžแƒ˜แƒ แƒ˜แƒกแƒžแƒ˜แƒ แƒ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒจแƒ”แƒ•แƒ™แƒ แƒ˜แƒ‘แƒแƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜ แƒฉแƒแƒฆแƒ แƒ›แƒแƒ•แƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒฆแƒ”แƒ‘แƒ•แƒ˜แƒ— แƒ“แƒ แƒคแƒแƒ แƒ›แƒแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—. แƒแƒ แƒ, แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒ•แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ, แƒ แƒแƒ› แƒ”แƒก แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ แƒฃแƒ™แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ

แƒแƒฎแƒšแƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ•แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ— แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ”แƒขแƒแƒžแƒ–แƒ” แƒ“แƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ— แƒ›แƒ”แƒแƒ แƒ”แƒจแƒ˜.

แƒแƒ•แƒ˜แƒฆแƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ - แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฅแƒ›แƒœแƒ˜แƒก CTE-แƒก แƒ“แƒ แƒ›แƒ˜แƒกแƒ’แƒแƒœ แƒแƒ แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก. แƒ˜แƒก แƒแƒงแƒแƒšแƒ˜แƒ‘แƒ”แƒ‘แƒก แƒแƒกแƒ”แƒ— แƒ’แƒ”แƒ’แƒ›แƒแƒก.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

CTE

แƒ—แƒฃ แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒแƒ™แƒ•แƒ˜แƒ แƒ“แƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒ”-12 แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒ›แƒ“แƒ” (แƒแƒœ แƒ›แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒ— MATERIALIZED) แƒคแƒแƒ แƒ›แƒ˜แƒ แƒ”แƒ‘แƒ CTE แƒแƒ แƒ˜แƒก แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ แƒ˜ แƒ‘แƒแƒ แƒ˜แƒ”แƒ แƒ˜ แƒ“แƒแƒ›แƒ’แƒ”แƒ’แƒ›แƒแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ— CTE แƒ—แƒแƒแƒ‘แƒแƒก แƒกแƒแƒ“แƒ›แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜ แƒ“แƒ แƒ™แƒ•แƒแƒœแƒซแƒก แƒกแƒแƒ“แƒ›แƒ” แƒ’แƒ”แƒ’แƒ›แƒแƒจแƒ˜ CTE, แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜ แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“ โ€žแƒ”แƒ‘แƒ แƒซแƒ•แƒ˜แƒแƒœโ€œ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒก, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒ’แƒแƒ•แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜.

แƒ•แƒแƒ แƒกแƒ™แƒ•แƒšแƒแƒ•แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ: CTE-แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒ˜.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ
แƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒชแƒฃแƒ“แƒแƒ“ แƒ›แƒแƒ‘แƒฃแƒ“แƒฃแƒšแƒ˜ แƒ“แƒ แƒ—แƒฃแƒœแƒ“แƒแƒช แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒ˜. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— CTE A แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ— CTE X, แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ“แƒแƒœแƒ”แƒ–แƒ” แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— CTE B แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ” แƒ˜แƒกแƒ”แƒ• CTE X:

WITH A AS (
  WITH X AS (...)
  SELECT ...
)
, B AS (
  WITH X AS (...)
  SELECT ...
)
...

แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒ”แƒก แƒฃแƒœแƒ“แƒ แƒ’แƒ”แƒกแƒ›แƒแƒ“แƒ”แƒ—. แƒแƒ›แƒ˜แƒก โ€žแƒ—แƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒ—โ€œ แƒ’แƒแƒ’แƒ”แƒ‘แƒ - แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ“แƒแƒœแƒแƒฎแƒ•แƒแƒช แƒ™แƒ˜, แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒกแƒฎแƒ”แƒฃแƒšแƒ˜แƒก แƒ“แƒแƒœแƒแƒฎแƒ•แƒแƒช แƒ™แƒ˜ - แƒซแƒแƒšแƒ˜แƒแƒœ แƒ แƒ—แƒฃแƒšแƒ˜แƒ. แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ CTE แƒ—แƒแƒแƒ‘แƒ แƒ แƒ—แƒฃแƒšแƒ˜แƒ, แƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒ˜ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒ“แƒ˜แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒฃแƒ’แƒแƒœแƒแƒ.

UNION

แƒ—แƒฃ แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒจแƒ˜ 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, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ— โ€žแƒ‘แƒแƒ•แƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœโ€œ แƒ“แƒ แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒ’แƒแƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ แƒแƒ’แƒแƒ แƒฆแƒแƒช แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ Scanom แƒ›แƒแƒ’แƒ˜แƒ“แƒ˜แƒก แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ: 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-แƒ”แƒ‘แƒ–แƒ”.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒแƒกแƒ›แƒฃแƒšแƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜แƒ - แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒ˜แƒฅแƒชแƒ”แƒ•แƒ˜แƒแƒœ InitPlan/SubPlan. แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒ“แƒแƒ˜แƒฅแƒชแƒ”แƒ•แƒ˜แƒแƒœ ... Join แƒแƒœ ... Anti Join, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒชแƒ แƒฌแƒ”แƒ  แƒ แƒแƒฆแƒแƒชแƒแƒก WHERE NOT EXISTS .... แƒ“แƒ แƒแƒฅ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒแƒ—แƒ˜ แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ - แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒจแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜.

แƒ˜แƒกแƒ”แƒ• แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ "แƒ•แƒแƒ แƒกแƒ™แƒ•แƒšแƒแƒ•แƒ˜แƒ—": แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ VALUES แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ“แƒ แƒ’แƒ”แƒ’แƒ›แƒแƒจแƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ™แƒ•แƒแƒœแƒซแƒก Values Scan.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

"แƒ“แƒแƒœแƒแƒ›แƒ แƒ˜แƒšแƒ˜" แƒกแƒฃแƒคแƒ˜แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ’แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒ— แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ˜แƒกแƒ’แƒแƒœ แƒ’แƒแƒœแƒแƒกแƒฎแƒ•แƒแƒ•แƒแƒ— - แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ› แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ˜แƒ—แƒแƒช แƒ’แƒ•แƒฎแƒ•แƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜. VALUES-แƒ‘แƒšแƒแƒ™แƒแƒ•แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ’แƒแƒกแƒฌแƒ•แƒ แƒ˜แƒ• แƒ–แƒ”แƒ›แƒแƒ“แƒแƒœ แƒฅแƒ•แƒ”แƒ›แƒแƒ“แƒแƒœ.

แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ

แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒšแƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ - แƒ“แƒแƒ แƒฉแƒ แƒ›แƒฎแƒแƒšแƒแƒ“ Limit.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฅ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ - แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ Limit, Sort, Aggregate, WindowAgg, Unique แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒก, แƒ—แƒฃ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ˜แƒฅ แƒแƒ แƒ˜แƒแƒœ. แƒแƒฅ แƒแƒ  แƒแƒ แƒ˜แƒก "แƒ•แƒแƒ แƒกแƒ™แƒ•แƒšแƒแƒ•แƒ”แƒ‘แƒ˜" แƒแƒœ แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒ”แƒ‘แƒ˜.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒจแƒ”แƒ›แƒแƒ’แƒ•แƒ˜แƒ”แƒ แƒ—แƒ“แƒ˜แƒ—

แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒ”แƒ‘แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ JOIN แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก. แƒ”แƒก แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ.
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ™แƒ•แƒแƒœแƒซแƒ˜ JoinExpr, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒแƒ แƒ˜ แƒจแƒ•แƒ˜แƒšแƒ˜ แƒฐแƒงแƒแƒ•แƒก - แƒ›แƒแƒ แƒชแƒฎแƒ”แƒœแƒ แƒ“แƒ แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒœแƒ. แƒ”แƒก, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒช แƒแƒ แƒ˜แƒก "แƒ–แƒ”แƒ›แƒแƒ—" แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ JOIN แƒ“แƒ แƒ แƒ แƒฌแƒ”แƒ แƒ˜แƒ "แƒฅแƒ•แƒ”แƒ›แƒแƒ—" แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜.

แƒ“แƒ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ”แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜แƒก แƒแƒ แƒ˜ แƒจแƒ—แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜แƒ * 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.

แƒ›แƒแƒ’แƒ แƒแƒ›, แƒฃแƒ›แƒ”แƒขแƒ”แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ โ€žแƒ’แƒแƒ˜แƒฎแƒกแƒœแƒแƒกโ€œ แƒ“แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒแƒ› แƒขแƒ˜แƒžแƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒ แƒ›แƒแƒ แƒชแƒฎแƒœแƒ˜แƒ• - แƒกแƒ˜แƒขแƒงแƒ•แƒแƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒช Google Chrome-แƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ— JavaScript แƒ™แƒแƒ“แƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ“แƒ แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก แƒ“แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ’แƒแƒœแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒแƒก "แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก".
PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒ“แƒ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒกแƒแƒชแƒแƒ•แƒ˜ แƒแƒ แƒฅแƒ˜แƒ•แƒ˜, แƒกแƒแƒ“แƒแƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ— แƒ“แƒ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒžแƒแƒ•แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ’แƒ”แƒ’แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“ แƒแƒœ แƒ’แƒแƒฃแƒ–แƒ˜แƒแƒ แƒแƒ— แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒœแƒ›แƒ”แƒก.

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒฌแƒแƒฃแƒ™แƒ˜แƒ—แƒฎแƒแƒ•แƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒแƒ“แƒ”แƒ™แƒ•แƒแƒขแƒฃแƒ  แƒคแƒแƒ แƒ›แƒแƒจแƒ˜ แƒ›แƒแƒงแƒ•แƒแƒœแƒ, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ "แƒœแƒแƒ แƒ›แƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜".

PostgreSQL แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜: แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒแƒ›แƒ—แƒฎแƒ•แƒ˜แƒแƒ— แƒ’แƒ”แƒ’แƒ›แƒ แƒ“แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ