PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ

เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจตเจฐเจค เจฐเจนเฉ‡ เจนเจจ explain.tensor.ru - เจธเจพเจกเฉ€ PostgreSQL เจฏเฉ‹เจœเจจเจพ เจตเจฟเจœเจผเฉ‚เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ เจธเฉ‡เจตเจพ เจธเจผเจพเจ‡เจฆ เจ‡เจธเจฆเฉ€ เจ•เจฟเจธเฉ‡ เจ‡เฉฑเจ• เจฎเจนเจพเจ‚เจธเจผเจ•เจคเฉ€ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจจเจพ เจนเฉ‹เจตเฉ‡ - เจธเจฐเจตเจฐ เจฒเฉŒเจ— เจฆเฉ‡ เจ‡เฉฑเจ• เจชเฉœเฉเจนเจจ เจฒเจˆ เจ”เจ–เฉ‡ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจฎเฉ‹เฉœเจจเจพ...

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ
... เจ…เจจเฉเจธเจพเจฐเฉ€ เจฏเฉ‹เจœเจจเจพ เจจเฉ‹เจกเจพเจ‚ เจฒเจˆ เจชเฉเจฐเจธเฉฐเจ—เจฟเจ• เจธเฉฐเจ•เฉ‡เจคเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเฉเฉฐเจฆเจฐ เจขเฉฐเจ— เจจเจพเจฒ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เฉ€เจคเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจตเจฟเฉฑเจš:

PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ
เจ‰เจธเจฆเฉ‡ เจฆเฉ‚เจœเฉ‡ เจญเจพเจ— เจฆเฉ‡ เจ‡เจธ เจชเฉเจฐเจคเฉ€เจฒเจฟเจชเฉ€ เจตเจฟเฉฑเจš PGConf.Russia 2020 'เจคเฉ‡ เจฐเจฟเจชเฉ‹เจฐเจŸ เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเจพเจ‚เจ—เจพ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ•เจพเจฎเจฏเจพเจฌ เจนเฉ‹เจเฅค

เจชเจนเจฟเจฒเฉ‡ เจญเจพเจ— เจฆเฉ€ เจชเฉเจฐเจคเฉ€เจฒเจฟเจชเฉ€, เจ–เจพเจธ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจนเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฎเจฐเจชเจฟเจค, เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฒเฉฑเจญเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ "เจฌเฉ€เจฎเจพเจฐ SQL เจธเจตเจพเจฒเจพเจ‚ เจฒเจˆ เจชเจ•เจตเจพเจจเจพ".



เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจฐเฉฐเจ— เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ - เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจนเฉเจฃ เจฏเฉ‹เจœเจจเจพ เจจเฉ‚เฉฐ เจฐเฉฐเจ— เจจเจนเฉ€เจ‚ เจฆเฉ‡เจตเจพเจ‚เจ—เฉ‡, เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจฐเฉฐเจ— เจฆเจฟเฉฑเจคเจพ เจนเฉˆ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‡เจน เจธเฉเฉฐเจฆเจฐ เจ…เจคเฉ‡ เจธเจฎเจเจฃ เจฏเฉ‹เจ— เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€.

เจ‡เจน เจธเจพเจจเฉ‚เฉฐ เจœเจพเจชเจฆเจพ เจธเฉ€ เจ•เจฟ เจ…เจœเจฟเจนเฉ€ เจ—เฉˆเจฐ-เจซเจพเจฐเจฎเฉˆเจŸเจก "เจธเจผเฉ€เจŸ" เจจเจพเจฒ เจฒเฉŒเจ— เจคเฉ‹เจ‚ เจ–เจฟเฉฑเจšเฉ€ เจ—เจˆ เจฌเฉ‡เจจเจคเฉ€ เจฌเจนเฉเจค เจฌเจฆเจธเฉ‚เจฐเจค เจ…เจคเฉ‡ เจ‡เจธเจฒเจˆ เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจฒเฉฑเจ—เจฆเฉ€ เจนเฉˆเฅค
PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ

เจ–เจผเจพเจธเจ•เจฐ เจœเจฆเฉ‹เจ‚ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจธเจฐเฉ€เจฐ เจจเฉ‚เฉฐ "เจ—เฉ‚เฉฐเจฆ" เจ•เจฐเจฆเฉ‡ เจนเจจ (เจ‡เจน, เจฌเฉ‡เจธเจผเจ•, เจ‡เฉฑเจ• เจเจ‚เจŸเฉ€เจชเฉˆเจŸเจฐเจจ เจนเฉˆ, เจชเจฐ เจ…เจœเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ) เจ‡เฉฑเจ• เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš. เจญเจฟเจ†เจจเจ•!

เจšเจฒเฉ‹ เจ‡เจธ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเฉ€ เจ–เฉ‚เจฌเจธเฉ‚เจฐเจคเฉ€ เจจเจพเจฒ เจ–เจฟเฉฑเจšเฉ€เจเฅค
PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ

เจ…เจคเฉ‡ เจœเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจธเฉเฉฐเจฆเจฐเจคเจพ เจจเจพเจฒ เจ–เจฟเฉฑเจš เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจญเจพเจต, เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจตเจพเจชเจธ เจœเฉ‹เฉœ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจซเจฟเจฐ เจ‡เจธ เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจนเจฐเฉ‡เจ• เจ†เจฌเจœเฉˆเจ•เจŸ เจฒเจˆ เจ‡เฉฑเจ• เจธเฉฐเจ•เฉ‡เจค "เจจเฉฑเจฅเฉ€" เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ - เจฏเฉ‹เจœเจจเจพ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐเฉ€ เจฌเจฟเฉฐเจฆเฉ‚ 'เจคเฉ‡ เจ•เฉ€ เจนเฉ‹เจ‡เจ†เฅค

เจธเจตเจพเจฒ เจธเฉฐเจŸเฉˆเจ•เจธ เจŸเฉเจฐเฉ€

เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจชเจนเจฟเจฒเจพเจ‚ เจชเจพเจฐเจธ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค
PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจนเฉˆ เจธเจฟเจธเจŸเจฎ เจฆเจพ เจ•เฉ‹เจฐ NodeJS 'เจคเฉ‡ เจšเฉฑเจฒเจฆเจพ เจนเฉˆ, เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฌเจฃเจพเจ‡เจ† เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ GitHub 'เจคเฉ‡ เจฒเฉฑเจญเฉ‹. เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจ‡เจน PostgreSQL เจชเจพเจฐเจธเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจนเจฟเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš "เจฌเจพเจˆเจกเจฟเฉฐเจ—" เจจเฉ‚เฉฐ เจตเจงเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ. เจญเจพเจต, เจตเจฟเจ†เจ•เจฐเจฃ เจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจฌเจพเจˆเจจเจฐเฉ€ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจจเฉ‹เจกเจœเฉ‡เจเจธ เจคเฉ‹เจ‚ เจฌเจพเจˆเจกเจฟเฉฐเจ— เจฌเจฃเจพเจ เจ—เจ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจฆเฉ‚เจœเฉ‡ เจฒเฉ‹เจ•เจพเจ‚ เจฆเฉ‡ เจฎเฉ‹เจกเจฟเจŠเจฒ เจจเฉ‚เฉฐ เจ†เจงเจพเจฐ เจตเจœเฉ‹เจ‚ เจฒเจฟเจ† - เจ‡เฉฑเจฅเฉ‡ เจ•เฉ‹เจˆ เจตเฉฑเจกเจพ เจฐเจพเจœเจผ เจจเจนเฉ€เจ‚ เจนเฉˆ.

เจ…เจธเฉ€เจ‚ เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจญเจพเจ— เจจเฉ‚เฉฐ เจธเจพเจกเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจฒเจˆ เจ‡เจจเจชเฉเจŸ เจตเจœเฉ‹เจ‚ เจซเฉ€เจก เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ - เจ†เจ‰เจŸเจชเฉเฉฑเจŸ 'เจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ JSON เจตเจธเจคเฉ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเจพเจฐเจธเจก เจธเจฟเฉฐเจŸเฉˆเจ•เจธ เจŸเฉเจฐเฉ€ เจฎเจฟเจฒเจฆเจพ เจนเฉˆเฅค
PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ

เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจŸเฉเจฐเฉ€ เจจเฉ‚เฉฐ เจ‰เจฒเจŸ เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจš เจšเจฒเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เฉฐเจกเฉˆเจ‚เจŸเจธ, เจ•เจฒเจฐเจฟเฉฐเจ—, เจ…เจคเฉ‡ เจซเจพเจฐเจฎเฉˆเจŸเจฟเฉฐเจ— เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจ‡เจ•เฉฑเจ เฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจจเจนเฉ€เจ‚, เจ‡เจน เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‡เจน เจธเจพเจจเฉ‚เฉฐ เจฒเฉฑเจ—เจฆเจพ เจธเฉ€ เจ•เจฟ เจ‡เจน เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉ‹เจตเฉ‡เจ—เจพเฅค
PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ

เจฎเฉˆเจชเจฟเฉฐเจ— เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจ…เจคเฉ‡ เจฏเฉ‹เจœเจจเจพ เจจเฉ‹เจก

เจนเฉเจฃ เจ†เจ“ เจฆเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ‰เจธ เจฏเฉ‹เจœเจจเจพ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจœเฉ‹เฉœ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเจธเจฆเจพ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เฉ€เจคเจพ เจธเฉ€ เจ…เจคเฉ‡ เจ‰เจธ เจธเจตเจพเจฒ เจฆเจพ เจœเจฟเจธเจฆเจพ เจ…เจธเฉ€เจ‚ เจฆเฉ‚เจœเฉ‡ เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เฉ€เจคเจพ เจธเฉ€เฅค

เจ†เจ‰ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆเจ - เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• CTE เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจคเฉ‹เจ‚ เจฆเฉ‹ เจตเจพเจฐ เจชเฉœเฉเจนเจฆเฉ€ เจนเฉˆเฅค เจ‰เจน เจ…เจœเจฟเจนเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค
PostgreSQL เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ: เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฆเจพ เจฎเฉ‡เจฒ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ

CTE

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจจเจพเจฒ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹, เจธเฉฐเจธเจ•เจฐเจฃ 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'เจ“เจฎ เจŸเฉ‡เจฌเจฒ-เจธเฉˆเจ•เจธเจผเจจ เจคเฉ‹เจ‚: 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, เจœเจฟเจธ เจฆเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจฆเฉ‹ เจฌเฉฑเจšเฉ‡ เจนเจจ - เจ–เฉฑเจฌเฉ‡ เจ…เจคเฉ‡ เจธเฉฑเจœเฉ‡เฅค เจ‡เจธ เจ…เจจเฉเจธเจพเจฐ, เจ‡เจน เจ‰เจน เจนเฉˆ เจœเฉ‹ เจคเฉเจนเจพเจกเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉ‹เจฃ เจฆเฉ‡ "เจ‰เฉฑเจชเจฐ" เจนเฉˆ เจ…เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจตเจฟเฉฑเจš "เจนเฉ‡เจ เจพเจ‚" เจ•เฉ€ เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆเฅค

เจ…เจคเฉ‡ เจฏเฉ‹เจœเจจเจพ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚, เจ‡เจน เจ•เฉเจ เจฆเฉ‡ เจฆเฉ‹ เจตเฉฐเจธเจผ เจนเจจ * 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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹