แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒก

แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒฃแƒกแƒ•แƒแƒ›แƒก แƒ—แƒแƒ•แƒ˜แƒก DBA-แƒก แƒแƒœ แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒ˜แƒก แƒ›แƒคแƒšแƒแƒ‘แƒ”แƒšแƒก, แƒฃแƒกแƒ•แƒแƒ›แƒก PostgreSQL แƒ™แƒแƒœแƒกแƒฃแƒšแƒขแƒแƒœแƒขแƒก, แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ”แƒ แƒ—แƒœแƒแƒ˜แƒ แƒแƒ“ แƒŸแƒฆแƒ”แƒ แƒก: "แƒ แƒแƒขแƒแƒ› แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ“แƒ แƒ?"

แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜แƒก แƒขแƒ แƒแƒ“แƒ˜แƒชแƒ˜แƒฃแƒšแƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜:

  • แƒแƒ แƒแƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ˜
    แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ— แƒจแƒ”แƒฃแƒ”แƒ แƒ—แƒ“แƒ”แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” CTE-แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒ—แƒ˜แƒแƒ—แƒแƒกแƒแƒ‘แƒ˜แƒ— แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ–แƒ”
  • แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ
    แƒ—แƒฃ แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ แƒฃแƒ™แƒ•แƒ” แƒซแƒแƒšแƒ˜แƒแƒœ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ ANALYZE-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒฌแƒ˜แƒœแƒ แƒฏแƒ”แƒ แƒ–แƒ” แƒจแƒ”แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ“แƒแƒœ
  • แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒก "แƒฉแƒแƒ แƒ—แƒ•แƒ".
    แƒ“แƒ แƒแƒฆแƒแƒ  แƒแƒ แƒ˜แƒก CPU-แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ˜แƒ—แƒ˜ แƒกแƒ˜แƒ›แƒซแƒšแƒแƒ•แƒ แƒ”, แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ˜แƒ’แƒแƒ‘แƒแƒ˜แƒขแƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ˜แƒขแƒฃแƒ›แƒ‘แƒ”แƒ‘แƒ, แƒแƒœ แƒ“แƒ˜แƒกแƒ™แƒ˜ แƒ•แƒ”แƒ  แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ โ€žแƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒกโ€œ
  • แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ แƒ™แƒแƒœแƒ™แƒฃแƒ แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ

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

แƒ›แƒแƒ’แƒ แƒแƒ›, แƒ แƒแƒ’แƒแƒ แƒช แƒ˜แƒ›แƒแƒ•แƒ” แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒแƒจแƒ˜แƒ แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜,

โ€žแƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒ แƒฎแƒ”แƒšแƒแƒ•แƒœแƒ”แƒ‘แƒแƒ แƒ“แƒ แƒ›แƒ˜แƒก แƒ“แƒแƒฃแƒคแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ...โ€œ

แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ—, แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒฌแƒแƒ  แƒฎแƒ”แƒšแƒกแƒแƒฌแƒงแƒแƒก!

แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ’แƒ”แƒ’แƒ›แƒ? แฒ แƒแƒฆแƒแƒช แƒ›แƒแƒ’แƒ“แƒแƒ’แƒ•แƒแƒ แƒ˜:

Index Scan using pg_class_relname_nsp_index on pg_class (actual time=0.049..0.050 rows=1 loops=1)
  Index Cond: (relname = $1)
  Filter: (oid = $0)
  Buffers: shared hit=4
  InitPlan 1 (returns $0,$1)
    ->  Limit (actual time=0.019..0.020 rows=1 loops=1)
          Buffers: shared hit=1
          ->  Seq Scan on pg_class pg_class_1 (actual time=0.015..0.015 rows=1 loops=1)
                Filter: (relkind = 'r'::"char")
                Rows Removed by Filter: 5
                Buffers: shared hit=1

แƒแƒœ แƒแƒกแƒ”:

"Append  (cost=868.60..878.95 rows=2 width=233) (actual time=0.024..0.144 rows=2 loops=1)"
"  Buffers: shared hit=3"
"  CTE cl"
"    ->  Seq Scan on pg_class  (cost=0.00..868.60 rows=9972 width=537) (actual time=0.016..0.042 rows=101 loops=1)"
"          Buffers: shared hit=3"
"  ->  Limit  (cost=0.00..0.10 rows=1 width=233) (actual time=0.023..0.024 rows=1 loops=1)"
"        Buffers: shared hit=1"
"        ->  CTE Scan on cl  (cost=0.00..997.20 rows=9972 width=233) (actual time=0.021..0.021 rows=1 loops=1)"
"              Buffers: shared hit=1"
"  ->  Limit  (cost=10.00..10.10 rows=1 width=233) (actual time=0.117..0.118 rows=1 loops=1)"
"        Buffers: shared hit=2"
"        ->  CTE Scan on cl cl_1  (cost=0.00..997.20 rows=9972 width=233) (actual time=0.001..0.104 rows=101 loops=1)"
"              Buffers: shared hit=2"
"Planning Time: 0.634 ms"
"Execution Time: 0.248 ms"

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒขแƒ”แƒฅแƒกแƒขแƒจแƒ˜ "แƒคแƒฃแƒ แƒชแƒšแƒ˜แƒ“แƒแƒœ" แƒซแƒแƒšแƒ˜แƒแƒœ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ“แƒ แƒ’แƒแƒฃแƒ’แƒ”แƒ‘แƒแƒ แƒ˜แƒ:

  • แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜ แƒฏแƒแƒ›แƒ˜ แƒฅแƒ•แƒ”แƒฎแƒ˜แƒก แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ˜แƒ—
    แƒแƒœแƒฃ แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“, แƒ—แƒฃ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ“แƒ แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก, แƒแƒœ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ›แƒ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒ“แƒแƒœ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒกแƒ™แƒ˜แƒ“แƒแƒœ, แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ แƒแƒ’แƒแƒ แƒ›แƒ” แƒ’แƒแƒ›แƒแƒแƒ™แƒšแƒแƒ— แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ”แƒแƒ แƒ”แƒก.
  • แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ“แƒ แƒ แƒ’แƒแƒ›แƒ แƒแƒ•แƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ แƒงแƒฃแƒŸแƒ”แƒ‘แƒ˜แƒ—
    แƒ“แƒ˜แƒแƒฎ, แƒ’แƒแƒ›แƒแƒ™แƒšแƒ”แƒ‘แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ แƒ—แƒฃแƒšแƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก "แƒ—แƒแƒ•แƒจแƒ˜" - แƒ‘แƒแƒšแƒแƒก แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒแƒ“ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒกแƒแƒ‘แƒ˜แƒ— แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜
  • แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ“แƒ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ”แƒ แƒ—แƒแƒ“ แƒ’แƒ•แƒ˜แƒจแƒšแƒ˜แƒก แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒก แƒ’แƒแƒชแƒ”แƒ›แƒแƒก แƒ›แƒ—แƒแƒ•แƒแƒ  แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒ–แƒ” โ€“ แƒ›แƒแƒจ แƒ•แƒ˜แƒœ "แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒฃแƒกแƒขแƒ˜ แƒ แƒ’แƒแƒšแƒ˜"?

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

แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒก

แƒ“แƒ แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ...

Tool

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

แƒ’แƒ”แƒ’แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฎแƒ˜แƒšแƒ•แƒแƒ“แƒแƒ‘แƒ

แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ แƒ—แƒฃ แƒแƒ แƒ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒ, แƒ แƒแƒชแƒ แƒ˜แƒก แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ?

Seq Scan on pg_class (actual time=0.009..1.304 rows=6609 loops=1)
  Buffers: shared hit=263
Planning Time: 0.108 ms
Execution Time: 1.800 ms

แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก.

แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒกแƒ”, แƒจแƒ”แƒ›แƒแƒ™แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒฎแƒ˜แƒ—แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ˜แƒœแƒ“แƒ˜แƒ™แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜แƒ, แƒ”แƒก แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒœแƒแƒ—แƒ”แƒšแƒ˜แƒ:

แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒก

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

แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒก

แƒ˜แƒกแƒ”, แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ แƒ—แƒฃแƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒก แƒฉแƒฅแƒแƒ แƒแƒ‘แƒก แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒก แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ:

แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒก

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒ แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒแƒ แƒ แƒขแƒ แƒ˜แƒ•แƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒ”แƒ’แƒ›แƒแƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒ”แƒ แƒ—แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒคแƒ”แƒกแƒ•แƒ˜:

แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒกแƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒก

แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒ™แƒแƒ แƒ’แƒแƒ“, แƒ—แƒฃ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒกแƒฃแƒกแƒขแƒ˜ แƒ›แƒฎแƒแƒ แƒ”แƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒแƒกแƒแƒฎแƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒฉแƒแƒœแƒก, แƒ แƒแƒขแƒแƒ› แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒงแƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒก แƒ“แƒ แƒแƒฃแƒฎแƒกแƒœแƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ โ€žแƒ แƒฃแƒกแƒฃแƒš แƒ”แƒœแƒแƒ–แƒ”โ€œ?

แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒกแƒฉแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒจแƒ”แƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒ—แƒ”แƒฃแƒšแƒ˜ แƒแƒกแƒ”แƒ—แƒ˜ แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜.

แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜-แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ˜แƒ แƒ”แƒ‘แƒ”แƒšแƒ˜

แƒแƒฎแƒšแƒ, แƒ—แƒฃ แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก แƒ’แƒแƒ“แƒแƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ— แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒš แƒ’แƒ”แƒ’แƒ›แƒแƒก, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ“แƒ แƒ แƒ“แƒแƒ˜แƒฎแƒแƒ แƒฏแƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš แƒ’แƒแƒœแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒแƒ–แƒ” - แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒแƒกแƒ”แƒ—แƒ˜:

แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒก

... แƒแƒœ แƒ—แƒฃแƒœแƒ“แƒแƒช แƒแƒกแƒ”:

แƒ แƒแƒ–แƒ” EXPLAIN แƒ“แƒฃแƒ›แƒก แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒแƒฎแƒกแƒœแƒแƒก

แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜

แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ "แƒ“แƒแƒฃแƒ แƒ—แƒ”แƒ—" แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ’แƒ”แƒ’แƒ›แƒแƒก, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ›แƒ˜แƒกแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก DETAIL แƒฎแƒแƒ–แƒ˜แƒ“แƒแƒœ, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒแƒ— แƒ˜แƒ’แƒ˜ แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒจแƒ˜:

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

    SELECT 'const', 'param'::text;
  • แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ˜แƒ— PREPARE/EXECUTE-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—
    แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ”แƒ›แƒฃแƒšแƒแƒชแƒ˜แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒฃแƒšแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒก แƒ˜แƒ’แƒœแƒแƒ แƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ - แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ“แƒแƒœแƒแƒฌแƒ”แƒ•แƒ แƒ”แƒ‘แƒฃแƒš แƒชแƒฎแƒ แƒ˜แƒšแƒ”แƒ‘แƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก

    DEALLOCATE ALL;
    PREPARE q(text) AS SELECT 'const', $1::text;
    EXECUTE q('param'::text);
    

แƒ’แƒ”แƒ’แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒ•แƒ˜

แƒฉแƒแƒกแƒ•แƒ˜แƒ—, แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ—, แƒ’แƒแƒฃแƒ–แƒ˜แƒแƒ แƒ”แƒ— แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒก! แƒ’แƒ”แƒ’แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒแƒ แƒฉแƒ”แƒ‘แƒ แƒแƒ แƒฅแƒ˜แƒ•แƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ— แƒ›แƒแƒ—: แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ.tensor.ru/archive

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

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒจแƒ˜ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘ แƒ˜แƒ› แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ”, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒก แƒ“แƒ แƒแƒก.

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

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