PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαžšαž½αž…αž αžΎαž™ αž–αž“αŸ’αž™αž›αŸ‹.tensor.ru - αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΎαž›αžƒαžΎαž‰αž•αŸ‚αž“αž€αžΆαžš PostgreSQL αžšαž”αžŸαŸ‹αž™αžΎαž„αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αžŠαžΉαž„αž–αžΈαž”αŸ’αžšαž‘αŸαžŸαž˜αž αžΆαž’αŸ†αžŽαžΆαž…αž˜αž½αž™αžšαž”αžŸαŸ‹αžœαžΆαž‘αŸ - αž€αžΆαžšαž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αž”αŸ†αžŽαŸ‚αž€αžŠαŸ‚αž›αž–αž·αž”αžΆαž€αž’αžΆαž“αž“αŸƒαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ...

PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš
... αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž”αžΆαž“αžšαž…αž“αžΆαž™αŸ‰αžΆαž„αžŸαŸ’αžšαžŸαŸ‹αžŸαŸ’αž’αžΆαžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžαžΆαž˜αž”αžšαž·αž”αž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž•αŸ‚αž“αž€αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ–

PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš
αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž…αžΆαžšαž·αž€αž“αŸƒαž•αŸ’αž“αŸ‚αž€αž‘αžΈαž–αžΈαžšαž“αŸƒαžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αŸ” αžšαž”αžΆαž™αž€αžΆαžšαžŽαŸαž“αŸ… PGConf.Russia 2020 αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžšαžΏαž„αž“αŸαŸ‡αŸ”

αž”αŸ’αžšαžαž·αž…αžΆαžšαžΉαž€αž“αŸƒαž•αŸ’αž“αŸ‚αž€αž‘αžΈαž˜αž½αž™ αžŠαŸ‚αž›αž§αž‘αŸ’αž‘αž·αžŸαžŠαž›αŸ‹αž”αž‰αŸ’αž αžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαž½αžšαž’αž˜αŸ’αž˜αžαžΆ αž“αž·αž„αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘ "αžšαžΌαž”αž˜αž“αŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ†αžŽαž½αžš SQL ឈឺ".



αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž›αžΆαž”αž–αžŽαŸŒ - αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αž›αŸ‚αž„αž–αžŽαŸŒαžαžΆαž˜αž•αŸ‚αž“αž€αžΆαžš αž™αžΎαž„αž”αžΆαž“αž›αžΆαž”αž–αžŽαŸŒαžœαžΆαžšαž½αž…αž αžΎαž™ αž™αžΎαž„αž˜αžΆαž“αžœαžΆαžŸαŸ’αž’αžΆαžαž αžΎαž™αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαŸ†αžŽαžΎαž˜αž½αž™αŸ”

αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž–αž½αž€αž™αžΎαž„αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„ "αžŸαž“αŸ’αž›αžΉαž€" αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž’αŸ’αžœαžΎαž‘αŸ’αžšαž„αŸ‹αž‘αŸ’αžšαžΆαž™αž”αŸ‚αž”αž“αŸαŸ‡ αžŸαŸ†αžŽαžΎαžŠαŸ‚αž›αž‘αžΆαž‰αž…αŸαž‰αž–αžΈαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž˜αžΎαž›αž‘αŸ…αž’αžΆαž€αŸ’αžšαž€αŸ‹αžŽαžΆαžŸαŸ‹ αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž˜αžΆαž“αž€αžΆαžšαžšαž’αžΆαž€αŸ‹αžšαž’αž½αž›αŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ "αž€αžΆαžœαž”αž·αž‘" αžαž½αž“αŸƒαžŸαŸ†αžŽαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ (αž“αŸαŸ‡αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹, αž›αŸ†αž“αžΆαŸ†αž˜αž½αž™, αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž€αžΎαžαž‘αžΎαž„) αž“αŸ…αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹αž˜αž½αž™αŸ” αžšαž“αŸ’αž’αžαŸ‹αžŽαžΆαžŸαŸ‹!

αžαŸ„αŸ‡αž‚αžΌαžšαž“αŸαŸ‡αž€αžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αž’αžΆαžαŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž’αžΆαž…αž‚αžΌαžšαžœαžΆαž™αŸ‰αžΆαž„αžŸαŸ’αžšαžŸαŸ‹αžŸαŸ’αž’αžΆαž αž“αŸ„αŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαžšαž»αŸ‡αžšαžΎ αž“αž·αž„αžŠαžΆαž€αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœαžαž½αž“αŸƒαžŸαŸ†αžŽαžΎαž“αŸ„αŸ‡ αž“αŸ„αŸ‡αž™αžΎαž„αž’αžΆαž… "αž—αŸ’αž‡αžΆαž”αŸ‹" αž“αžΌαžœαžαž˜αŸ’αžšαž»αž™αž˜αž½αž™αž‘αŸ…αž€αžΆαž“αŸ‹αžœαžαŸ’αžαž»αž“αžΈαž˜αž½αž™αŸ—αž“αŸƒαžŸαŸ†αžŽαžΎαž“αŸαŸ‡ - αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž…αŸ†αžŽαž»αž…αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž€αžΆαžšαŸ”

αž˜αŸ‚αž€αž’αžΆαž„αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαŸ†αžŽαž½αžš

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŸαŸ†αžŽαžΎαžαŸ’αžšαžΌαžœαžαŸ‚αž‰αŸ‚αž€αž‡αžΆαžŠαŸ†αž”αžΌαž„αŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž™αžΎαž„αž˜αžΆαž“ αžŸαŸ’αž“αžΌαž›αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎ NodeJSαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΌαžŒαž»αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆ αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαžΆαž“αŸ…αž›αžΎ GitHub. αžαžΆαž˜αž€αžΆαžšαž–αž·αž αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž„αŸ’αžšαžΈαž€ "αž€αžΆαžšαž…αž„" αž‘αŸ…αž“αžΉαž„αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αž“αž»αž„αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‰αŸ‚αž€ PostgreSQL αžαŸ’αž›αž½αž“αžœαžΆαž•αŸ’αž‘αžΆαž›αŸ‹αŸ” αž“αŸ„αŸ‡αž‚αžΊαžœαŸαž™αŸ’αž™αžΆαž€αžšαžŽαŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αž‡αžΆαž‚αŸ„αž›αž–αžΈαžšαž™αŸ‰αžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰ αž αžΎαž™αž€αžΆαžšαž…αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αž–αžΈ NodeJS αŸ” αž™αžΎαž„β€‹αž™αž€β€‹αž˜αŸ‰αžΌαžŒαž»αž›β€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€β€‹αžŠαž‘αŸƒβ€‹αž˜αž€β€‹αž’αŸ’αžœαžΎβ€‹αž‡αžΆβ€‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ - αžœαžΆβ€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αž’αžΆαžαŸŒαž€αŸ†αž”αžΆαŸ†αž„β€‹αž’αŸ’αžœαžΈβ€‹αž’αŸ†αžŠαž»αŸ†β€‹αž“αŸ…β€‹αž‘αžΈαž“αŸαŸ‡β€‹αž‘αŸαŸ”

αž™αžΎαž„αž”αž‰αŸ’αž…αžΌαž›αžαž½αž“αŸƒαžŸαŸ†αžŽαžΎαž‡αžΆαž’αžΆαžαž»αž”αž‰αŸ’αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž˜αž»αžαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ - αž“αŸ…αž›αž‘αŸ’αž’αž•αž› αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž˜αŸ‚αž€αž’αžΆαž„αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž”αžΆαž“αž‰αŸ‚αž€αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαžœαžαŸ’αžαž» JSON αŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αžšαžαŸ‹αž€αžΆαžαŸ‹αž˜αŸ‚αž€αž’αžΆαž„αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž‘αž·αžŸαžŠαŸ…αž•αŸ’αž‘αž»αž™ αž αžΎαž™αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αžŸαŸ†αžŽαžΎαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž…αžΌαž›αž”αž“αŸ’αž‘αžΆαžαŸ‹ αž€αžΆαžšαžŠαžΆαž€αŸ‹αž–αžŽαŸŒ αž“αž·αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž”αžΆαž“αŸ” αž‘αŸ αžœαžΆβ€‹αž˜αž·αž“β€‹αž’αžΆαž…β€‹αž”αŸ’αžŠαžΌαžšβ€‹αžαžΆαž˜β€‹αž”αŸ†αžŽαž„β€‹αž”αžΆαž“β€‹αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αžœαžΆβ€‹αž αžΆαž€αŸ‹β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž™αžΎαž„β€‹αžαžΆβ€‹αžœαžΆβ€‹αž“αžΉαž„β€‹αž˜αžΆαž“β€‹αž—αžΆαž–β€‹αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž€αžΆαžšαž‚αžΌαžŸαž•αŸ‚αž“αž‘αžΈαžŸαŸ†αžŽαž½αžš αž“αž·αž„αž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αž“αžΆαŸ†αž„

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αž’αžΆαž…αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž“αžΌαžœαž•αŸ‚αž“αž€αžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžœαž·αž—αžΆαž‚αž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αžŠαŸ†αž”αžΌαž„ αž“αž·αž„αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžœαž·αž—αžΆαž‚αž€αŸ’αž“αž»αž„αž‡αŸ†αž αžΆαž“αž‘αžΈαž–αžΈαžšαŸ”

αž…αžΌαžšαž™αž€αž§αž‘αžΆαž αžšαžŽαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™ - αž™αžΎαž„αž˜αžΆαž“αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαž CTE αž αžΎαž™αž’αžΆαž“αž–αžΈαžœαžΆαž–αžΈαžšαžŠαž„αŸ” αž‚αžΆαžαŸ‹αž”αž„αŸ’αž€αžΎαžαž•αŸ‚αž“αž€αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡αŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

CTE

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αžšαž αžΌαžαžŠαž›αŸ‹αž€αŸ†αžŽαŸ‚ 12 (αž¬αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž‚αž“αŸ’αž›αžΉαŸ‡ MATERIALIZED) αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž CTE αž‚αžΊαž‡αžΆαž§αž”αžŸαž‚αŸ’αž‚αžŠαžΆαž…αŸ‹αžαžΆαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžšαŸ€αž”αž…αŸ†αž•αŸ‚αž“αž€αžΆαžš.
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αžƒαžΎαž‰αž‡αŸ†αž“αžΆαž“αŸ‹ CTE αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎ αž“αž·αž„αžαŸ’αž“αžΆαŸ†αž„αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž€αžΆαžš CTEαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž”αŸ’αžšαžΆαž€αžŠαž‡αžΆ "αž”αŸ’αžšαž™αž»αž‘αŸ’αž’" αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆ αž™αžΎαž„αž’αžΆαž…αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž”αžΆαž“αž—αŸ’αž›αžΆαž˜αŸ—αŸ”

αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αžŸαž‰αŸ’αž‰αžΆαž•αŸ’αž€αžΆαž™αŸ– CTEs αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš
αž˜αžΆαž“αžŸαŸ†αž”αž»αž€αžŠαŸ‚αž›αž˜αž·αž“αžŸαžΌαžœαž›αŸ’αž’ αž αžΎαž™αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αŸ€αžαž•αž„αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž’αŸ’αž“αž€αž’αžΆαž…αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ 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 Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž‡αžΆ "αžαžΆαž„αž›αžΎ" αžαžΆαž„αž›αžΎ 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-node αž“αž·αž„αž˜αž½αž™αž‘αŸ€αž - Recursive Union.
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž’αžΆαž“ - αžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™

αž’αŸ’αžœαžΈαŸ—β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžšαŸ€αž”β€‹αž…αŸ†β€‹αžšαž½αž…β€‹αž αžΎαž™ αž₯αž‘αžΌαžœβ€‹αž™αžΎαž„β€‹αžŠαžΉαž„β€‹αžαžΆβ€‹αžŸαŸ†αžŽαžΎβ€‹αž˜αž½αž™β€‹αžŽαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž“αžΉαž„β€‹αž•αŸ’αž“αŸ‚αž€β€‹αžŽαžΆβ€‹αž“αŸƒβ€‹αž‚αž˜αŸ’αžšαŸ„αž„αŸ” αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ†αžŽαŸ‚αž€αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαžαŸ’αžαž»αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αžŠαŸ‚αž› "αž’αžΆαž…αž’αžΆαž“αž”αžΆαž“" αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž“αž·αž„αžŠαŸ„αž™αž’αž˜αŸ’αž˜αž‡αžΆαžαž·αŸ”

αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαž“αŸƒαžŸαŸ†αžŽαž½αžš αž™αžΎαž„αž˜αž·αž“αžŠαžΉαž„αžαžΆαžœαžΆαž‡αžΆαžαžΆαžšαžΆαž„ ឬ 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 Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž˜αŸ’αžαž„αž‘αŸ€αž αž—αžΆαžšαž€αž·αž…αŸ’αž… "αž‡αžΆαž˜αž½αž™αžŸαž‰αŸ’αž‰αžΆαž•αŸ’αž€αžΆαž™". αž™αžΎαž„αž‘αž‘αž½αž›αž™αž€αžŸαŸ†αžŽαžΎ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžœαžΆ αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž€αŸ’αž›αŸ‚αž„αž€αŸ’αž›αžΆαž™αž‘αŸ - αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž’αžΆαž“αžœαžΆαž–αžΈαžšαžŠαž„αž–αžΈ CTE αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž™αžΎαž„αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αž•αŸ‚αž“αž€αžΆαžš - αžαžΎαž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αžœαžΈ? αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž™αžΎαž„αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž€αŸ’αž›αŸ‚αž„αž€αŸ’αž›αžΆαž™? αž™αžΎαž„αž˜αž·αž“αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰αžœαžΆαž‘αŸαŸ” αžαžΎαž‚αžΆαžαŸ‹αž‘αž‘αž½αž›αž”αžΆαž“ "αž›αŸαž" αž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž―αžŽαžΆ?

PostgreSQL αž”αž“αŸ’αžαŸ‚αž˜αžœαžΆαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ” αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž™αž›αŸ‹αž–αžΈαžœαžΆαŸ” αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαžˆαŸ’αž˜αŸ„αŸ‡αž αŸ…αž€αŸ’αžšαŸ…αž”αŸ‚αž”αž“αŸαŸ‡ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž™αžΎαž„ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž•αŸ‚αž“αž€αžΆαžš αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž“αŸαž™αž’αŸ’αžœαžΈαž“αŸ„αŸ‡αž‘αŸ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž™αŸ‰αžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ” αž…αžΌαžšαž™αžΎαž„αž€αž»αŸ†αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž…αŸ†αž–αŸ„αŸ‡αž‚αžΆαžαŸ‹αŸ”

αž‘αžΈαž–αžΈαžš αž—αžΆαžšαž€αž·αž…αŸ’αž… "αž‡αžΆαž˜αž½αž™αžŸαž‰αŸ’αž‰αžΆαž•αŸ’αž€αžΆαž™"αŸ– αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž€αŸ†αž–αž»αž„αž’αžΆαž“αž–αžΈαžαžΆαžšαžΆαž„αž”αŸ‚αž„αž…αŸ‚αž€ αž“αŸ„αŸ‡αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“ node Append ឬ Merge AppendαžŠαŸ‚αž›αž“αžΉαž„αž˜αžΆαž“ "αž€αž»αž˜αžΆαžš" αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ† αž αžΎαž™αž–αž½αž€αž‚αŸαž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αž“αžΉαž„αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžŠαžΌαž…αž˜αŸ’αžŠαŸαž… Scan'om αž–αžΈαž•αŸ’αž“αŸ‚αž€αžαžΆαžšαžΆαž„αŸ– Seq Scan, Bitmap Heap Scan ឬ Index Scan. αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŽαžΆαž€αŸαžŠαŸ„αž™ "αž€αž»αž˜αžΆαžš" αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αžΉαž„αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžŸαŸ†αžŽαž½αžšαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ - αž“αŸαŸ‡αž‡αžΆαžšαž”αŸ€αž”αžŠαŸ‚αž›αžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž–αžΈ Append αž“αŸ… UNION.
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž™αžΎαž„β€‹αž€αŸβ€‹αž™αž›αŸ‹β€‹αž–αžΈβ€‹αž€αžΆαžšβ€‹αž…αž„β€‹αž€αŸ’αžšαž„β€‹αž”αŸ‚αž”β€‹αž“αŸαŸ‡β€‹αžŠαŸ‚αžš αž”αŸ’αžšαž˜αžΌαž›β€‹αžœαžΆ β€œαž€αŸ’αž“αž»αž„β€‹αž˜αž½αž™β€‹αž‚αŸ†αž“αžšβ€ αž αžΎαž™β€‹αž“αž·αž™αžΆαž™αŸ– β€œαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž’αžΆαž“αž–αžΈ megatable αž‚αžΊαž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž“αž·αž„αž…αž»αŸ‡αž€αŸ’αžšαŸ„αž˜αžŠαžΎαž˜αžˆαžΎ".

αžαŸ’αž“αžΆαŸ†αž„αž‘αž‘αž½αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™ "αžŸαžΆαž˜αž‰αŸ’αž‰"

PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

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 "αž•αŸ‚αž“αž‘αžΈ" αž‘αŸ… SRFs αž“αŸƒαžˆαŸ’αž˜αŸ„αŸ‡αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαž€αžΆαž“αŸ‹αžαŸ‚αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ - αž‡αžΆαž’αž€αž»αžŸαž› αž–αž½αž€αž‚αŸαž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆ InitPlan/SubPlan. αž–αŸαž›αžαŸ’αž›αŸ‡αž–αž½αž€αž‚αŸαž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆ ... Join ឬ ... Anti Joinαž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž’αŸ’αžœαžΈαž˜αž½αž™αžŠαžΌαž…αž‡αžΆ WHERE NOT EXISTS .... αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžœαžΆαž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαž–αž½αž€αž‚αŸαž”αžΆαž“αž‘αŸ - αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸƒαž•αŸ‚αž“αž€αžΆαžšαž˜αž·αž“αž˜αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αžαŸ’αž“αžΆαŸ†αž„αž“αŸƒαž•αŸ‚αž“αž€αžΆαžšαž“αŸ„αŸ‡αž‘αŸαŸ”

αž˜αŸ’αžαž„αž‘αŸ€αž αž—αžΆαžšαž€αž·αž…αŸ’αž… "αž‡αžΆαž˜αž½αž™αžŸαž‰αŸ’αž‰αžΆαž•αŸ’αž€αžΆαž™"αŸ– αžαŸ’αž›αŸ‡ VALUES αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎαŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αž“αž·αž„αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž€αžΆαžšαž’αŸ’αž“αž€αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” Values Scan.
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž”αž…αŸ’αž…αŸαž™ "αž›αŸαž" αž“αžΉαž„αž‡αž½αž™αž”αŸ‚αž„αž…αŸ‚αž€αž–αž½αž€αžœαžΆαž–αžΈαž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€ - αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž™αŸ‰αžΆαž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž˜αž›αŸ†αžŠαžΆαž”αŸ‹αžŠαŸ‚αž›αžšαž€αžƒαžΎαž‰αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ” VALUES- αž”αŸ’αž›αž»αž€αžαžΆαž˜αžŸαŸ†αžŽαžΎαž–αžΈαž€αŸ†αž–αžΌαž›αž‘αŸ…αž”αžΆαžαŸ”

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™

αžœαžΆαž αžΆαž€αŸ‹αž”αžΈαžŠαžΌαž…αž‡αžΆαž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎαžšαž”αžŸαŸ‹αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαž˜αŸ’αžšαŸ€αž”αž…αŸαž‰αž αžΎαž™ αž’αŸ’αžœαžΈαŸ—αž“αŸ…αžŸαŸαžŸαžŸαž›αŸ‹αž‚αžΊ Limit.
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰ - αžαŸ’αž“αžΆαŸ†αž„αžŠαžΌαž…αž‡αžΆ Limit, Sort, Aggregate, WindowAgg, Unique "αž•αŸ‚αž“αž‘αžΈ" αž–αžΈαž˜αž½αž™αž‘αŸ…αž˜αž½αž™αž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αž½αž€αž‚αŸαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” αž˜αž·αž“αž˜αžΆαž“ "αž•αŸ’αž€αžΆαž™" αž¬αž€αžΆαžšαž›αŸ†αž”αžΆαž€αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‘αŸαŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž…αžΌαž›αžšαž½αž˜

αž€αžΆαžšαž›αŸ†αž”αžΆαž€αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆ JOIN αžšαžœαžΆαž„αž–αž½αž€αž‚αŸαŸ” αž“αŸαŸ‡αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž‘αŸ…αžšαž½αž…αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž’αžΆαž…αž‘αŸ…αžšαž½αž…αŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‰αŸ‚αž€αžŸαŸ†αžŽαž½αžš αž™αžΎαž„αž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„ JoinExprαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΌαž“αž–αžΈαžšαž“αžΆαž€αŸ‹αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠ - αž†αŸ’αžœαŸαž„αž“αž·αž„αžŸαŸ’αžαžΆαŸ†αŸ” αž“αŸαŸ‡β€‹αž”αžΎβ€‹αžαžΆαž˜β€‹αž“αŸ„αŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž› "αžαžΆαž„β€‹αž›αžΎ" JOIN αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€ αž“αž·αž„β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŸαžšαžŸαŸαžš "αžαžΆαž„αž€αŸ’αžšαŸ„αž˜" αžœαžΆβ€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„β€‹αžŸαŸ†αžŽαžΎαŸ”

αž αžΎαž™β€‹αžαžΆαž˜β€‹αž‘αžŸαŸ’αžŸαž“αŸˆβ€‹αž“αŸƒβ€‹αž•αŸ‚αž“αž€αžΆαžšβ€‹αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž€αžΌαž“β€‹αž…αŸ…β€‹αž–αžΈαžšβ€‹αž“αžΆαž€αŸ‹β€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€β€‹αžαŸ’αž›αŸ‡ * Loop/* Join- αžαŸ’αž“αžΆαŸ†αž„αŸ” Nested Loop, Hash Anti Join,... - αž’αŸ’αžœαžΈαž˜αž½αž™β€‹αžŠαžΌαž…β€‹αž“αŸ„αŸ‡αŸ”

αž…αžΌαžšαž”αŸ’αžšαžΎαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŸαžΆαž˜αž‰αŸ’αž‰αŸ– αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž˜αžΆαž“αžαžΆαžšαžΆαž„ A αž“αž·αž„ B αžŠαŸ‚αž› "αž…αžΌαž›αžšαž½αž˜" αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž€αžΆαžšαž“αŸ„αŸ‡ αžαžΆαž˜αž€αžΆαžšαžŸαŸ’αž“αžΎαžŸαž»αŸ† αž–αž½αž€αž‚αŸαž’αžΆαž…αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž“αŸ… A-JOIN-B, ឬ B-JOIN-A. αž…αžΌαžšβ€‹αž™αžΎαž„β€‹αž–αŸ’αž™αžΆαž™αžΆαž˜β€‹αž•αŸ’αžŸαŸ†β€‹αžœαž·αž’αžΈβ€‹αž“αŸαŸ‡ αž…αžΌαžšβ€‹αž™αžΎαž„β€‹αž–αŸ’αž™αžΆαž™αžΆαž˜β€‹αž•αŸ’αžŸαŸ†β€‹αžœαž·αž’αžΈβ€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αžβ€‹αž αžΎαž™β€‹αž”αž“αŸ’αžβ€‹αžšαž αžΌαžβ€‹αžŠαž›αŸ‹β€‹αž™αžΎαž„β€‹αž’αžŸαŸ‹β€‹αž‚αžΌβ€‹αž”αŸ‚αž”β€‹αž“αŸαŸ‡αŸ”

αž…αžΌαžšβ€‹αž™αž€β€‹αž˜αŸ‚αž€αž’αžΆαž„β€‹αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’β€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„ αž™αž€β€‹αž•αŸ‚αž“αž€αžΆαžšβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž˜αžΎαž›β€‹αžœαžΆ... αž˜αž·αž“β€‹αžŠαžΌαž…β€‹αž‚αŸ’αž“αžΆβ€‹αž‘αŸ!
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αžαŸ„αŸ‡αž‚αžΌαžšαžœαžΆαž‘αžΎαž„αžœαž·αž‰αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž€αŸ’αžšαžΆαž αŸ’αžœ - ធូ αžœαžΆαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆαž’αŸ’αžœαžΈαž˜αž½αž™αž αžΎαž™!
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž…αžΌαžšαž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž™αžΎαž„αž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαž˜αžΆαž“αž€αžΌαž“ B αž“αž·αž„ C - αž™αžΎαž„αž˜αž·αž“αžαŸ’αžœαž›αŸ‹αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž›αŸ†αžŠαžΆαž”αŸ‹αž’αŸ’αžœαžΈαž“αŸ„αŸ‡αž‘αŸαŸ” αž…αžΌαžšαž•αŸ’αžŸαŸ†αž–αž½αž€αžœαžΆ αž αžΎαž™αž”αž„αŸ’αžœαŸ‚αžšαžšαžΌαž”αž—αžΆαž–αžαŸ’αž“αžΆαŸ†αž„αž–αžΈαž›αžΎαŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αžαŸ„αŸ‡αž˜αžΎαž›αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž˜αžΆαž“αžαŸ’αž“αžΆαŸ†αž„αžŠαŸ‚αž›αž˜αžΆαž“αž€αžΌαž“ A αž“αž·αž„αž‚αžΌ (B + C) - αž†αž”αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž–αž½αž€αž‚αŸαž•αž„αžŠαŸ‚αžšαŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž’αžŸαŸ’αž…αžΆαžšαŸ’αž™! αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž™αžΎαž„αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡αŸ” JOIN αž–αžΈαžŸαŸ†αžŽαžΎαž‡αžΆαž˜αž½αž™αžαŸ’αž“αžΆαŸ†αž„αž•αŸ‚αž“αž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž‚αŸ’αž“αžΆαžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™αŸ”

Alas, αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž˜αž·αž“αžαŸ‚αž„αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‘αŸαŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž§αž‘αžΆαž αžšαžŽαŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎ A JOIN B JOIN Cαž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž€αžΆαžš αž‡αžΆαžŠαŸ†αž”αžΌαž„αžαŸ’αž“αžΆαŸ†αž„ "αžαžΆαž„αž€αŸ’αžšαŸ…" A αž“αž·αž„ C αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž˜αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžšαž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ†αžŽαžΎαž“αŸ„αŸ‡αž‘αŸ αž™αžΎαž„αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžšαŸ†αž›αŸαž… αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαžαŸ’αžšαžΌαžœαž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž–αŸαžαŸŒαž˜αžΆαž“αž‡αŸ†αž“αž½αž™αž“αŸ„αŸ‡αž‘αŸαŸ” αžœαžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„ "αž€αŸ’αž”αŸ€αžŸ" αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžš A, B.

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‚αŸ’αžšαž”αŸ‹αžαŸ’αž“αžΆαŸ†αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“ "αž”αž·αž‘αž—αŸ’αž‡αžΆαž”αŸ‹" αž αžΎαž™αž’αŸ’αž“αž€αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž‘αž˜αŸ’αžšαž„αŸ‹αž”αŸ‚αž”αž”αž‘αž“αŸαŸ‡αž“αŸ…αžαžΆαž„αž†αŸ’αžœαŸαž„αž‘αžΆαž“αŸ‹αž–αŸαž›αžœαŸαž›αžΆ - αžαžΆαž˜αž“αŸαž™αžαŸ’αžšαž„αŸ‹ αžŠαžΌαž…αž‡αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ Google Chrome αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚αž€αžΌαžŠ JavaScript αž‡αžΆαžŠαžΎαž˜αŸ” αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αž˜αžΎαž›β€‹αžƒαžΎαž‰β€‹αž–αžΈβ€‹αžšαž™αŸˆαž–αŸαž›β€‹αžŠαŸ‚αž›β€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹β€‹αž“αžΈαž˜αž½αž™αŸ— αž“αž·αž„β€‹αžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸβ€‹αž“αžΈαž˜αž½αž™αŸ—β€‹αžαŸ’αžšαžΌαžœβ€‹αž…αŸ†αžŽαžΆαž™β€‹αž–αŸαž›β€‹αžŠαžΎαž˜αŸ’αž”αžΈ "αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·"αŸ”
PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡ αž–αž½αž€αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€ αž”αŸαžŽαŸ’αžŽαžŸαžΆαžšαžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž αžΎαž™αž€αŸ’αžšαŸ„αž™αž˜αž€αžŸαŸ’αžœαŸ‚αž„αžšαž€αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžšαž½αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαŸ†αžŽαžΎαžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’ αž¬αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αžαŸ†αžŽαž‡αžΆαž˜αž½αž™αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αžΆαŸ†αž™αž€αžŸαŸ†αžŽαž½αžšαžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž’αžΆαž“αž”αžΆαž“αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹ αžŸαžΌαž˜αž”αŸ’αžšαžΎ "αž§αž”αž€αžšαžŽαŸαž’αž˜αŸ’αž˜αžαžΆ" αžšαž”αžŸαŸ‹αž™αžΎαž„.

PostgreSQL Query ProfilerαŸ– αžšαž”αŸ€αž”αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž•αŸ‚αž“αž€αžΆαžš αž“αž·αž„αžŸαŸ†αžŽαž½αžš

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹