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 เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆ

เจ…เจคเฉ‡ เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจธเจพเจจเฉ‚เฉฐ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ ...

เจŸเฉ‚เจฒ

เจ‡เจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจฏเฉ‹เจœเจจเจพ เจ…เจคเฉ‡ เจฌเฉ‡เจจเจคเฉ€ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ "เจ•เจธเฉ‚เจฐเจตเจพเจฐ เจ•เฉŒเจฃ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉ€ เจ•เจฐเจจเจพ เจนเฉˆ" เจจเฉ‚เฉฐ เจธเจฎเจเจฃ เจตเจฟเฉฑเจš เจฎเจฆเจฆ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจธเจพเจฐเฉ‡ เจฎเฉเฉฑเจ– เจฎเจ•เฉˆเจจเจฟเจ•เจธ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€เฅค เจ–เฉˆเจฐ, เจ…เจคเฉ‡ เจ•เจฎเจฟเจŠเจจเจฟเจŸเฉ€ เจจเจพเจฒ เจ†เจชเจฃเฉ‡ เจ…เจจเฉเจญเจต เจฆเจพ เจนเจฟเฉฑเจธเจพ เจธเจพเจ‚เจเจพ เจ•เจฐเฉ‹เฅค
เจฎเจฟเจฒเฉ‹ เจ…เจคเฉ‡ เจตเจฐเจคเฉ‹ - explain.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 เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆ

เจชเจฐ เจœเฉ‡ เจฏเฉ‹เจœเจจเจพ เจตเจงเฉ‡เจฐเฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉˆ, เจคเจพเจ‚ เจ‰เจน เจฌเจšเจพเจ… เจฒเจˆ เจ†เจตเฉ‡เจ—เจพ piechart เจตเจพเจฐ เจตเฉฐเจก เจจเฉ‹เจกเจธ เจฆเฉเจ†เจฐเจพ:

EXPLAIN เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆ

เจ–เฉˆเจฐ, เจธเจญ เจคเฉ‹เจ‚ เจฎเฉเจธเจผเจ•เจฒ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฒเจˆ เจ‰เจน เจฎเจฆเจฆ เจ•เจฐเจจ เจฒเจˆ เจ•เจพเจนเจฒเฉ€ เจตเจฟเฉฑเจš เจนเฉˆ เจคเจฐเฉฑเจ•เฉ€ เจšเจพเจฐเจŸ:

EXPLAIN เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆ

เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจฅเฉ‡ เจ•เจพเจซเจผเฉ€ เจ—เฉˆเจฐ-เจฎเจพเจฎเฉ‚เจฒเฉ€ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจนเจจ เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจฏเฉ‹เจœเจจเจพ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจ…เจธเจฒ เจฐเฉ‚เจŸ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ:

EXPLAIN เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆEXPLAIN เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆ

เจขเจพเจ‚เจšเจพเจ—เจค เจธเฉเจฐเจพเจ—

เจ–เฉˆเจฐ, เจœเฉ‡ เจฏเฉ‹เจœเจจเจพ เจฆเจพ เจชเฉ‚เจฐเจพ เจขเจพเจ‚เจšเจพ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจฆเฉเจ–เจฆเจพเจˆ เจธเจฅเจพเจจ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจฐเฉฑเจ–เฉ‡ เจ—เจ เจนเจจ เจ…เจคเฉ‡ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡ เจฐเจนเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ•เจฟเจ‰เจ‚ เจจเจพ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจจเฉ‚เฉฐ เจ‰เจœเจพเจ—เจฐ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ "เจฐเฉ‚เจธเฉ€ เจญเจพเจธเจผเจพ" เจตเจฟเฉฑเจš เจธเจฎเจเจพเจ“?

EXPLAIN เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆเจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เฉเจ เจฆเจฐเจœเจจ เจ…เจœเจฟเจนเฉ‡ เจธเจฟเจซเจพเจฐเจฟเจธเจผ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจ‡เจ•เฉฑเจ เฉ‡ เจ•เจฐ เจšเฉเฉฑเจ•เฉ‡ เจนเจพเจ‚เฅค

เจฒเจพเจˆเจจ-เจฆเจฐ-เจฒเจพเจˆเจจ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ

เจนเฉเจฃ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฎเฉ‚เจฒ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจจเฉ‚เฉฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃเฉ€ เจฏเฉ‹เจœเจจเจพ 'เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจนเจฐเฉ‡เจ• เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจฌเจฟเจ†เจจ 'เจคเฉ‡ เจ•เจฟเฉฐเจจเจพ เจธเจฎเจพเจ‚ เจฌเจฟเจคเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€ - เจ•เฉเจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚:

EXPLAIN เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆ

...เจœเจพเจ‚ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจตเฉ€:

EXPLAIN เจ•เจฟเจธ เจฌเจพเจฐเฉ‡ เจšเฉเฉฑเจช เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเฉ‹เจฒเจฃเจพ เจนเฉˆ

เจ‡เฉฑเจ• เจฌเฉ‡เจจเจคเฉ€ เจตเจฟเฉฑเจš เจฎเจพเจชเจฆเฉฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃเจพ

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

  • เจฌเฉ‡เจจเจคเฉ€ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจฌเจฆเจฒ เจฆเฉ‡ เจจเจพเจฒ
    เจคเฉเจนเจพเจกเฉ‡ เจ…เจงเจพเจฐ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฟเฉฐเจ— 'เจคเฉ‡ เจธเจฟเฉฑเจงเฉ‡ เจ…เจฎเจฒ เจฒเจˆ

    SELECT 'const', 'param'::text;
  • PREPARE/EXECUTE เจฐเจพเจนเฉ€เจ‚ เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจฌเจฆเจฒ เจฆเฉ‡ เจจเจพเจฒ
    เจธเจผเจกเจฟเจŠเจฒเจฐ เจฆเฉ‡ เจ•เฉฐเจฎ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจจ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเฉเจฐเจฟเจ• เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจ…เจฃเจกเจฟเฉฑเจ  เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ - เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจœเจฆเฉ‹เจ‚ เจตเจฟเจญเจพเจœเจฟเจค เจŸเฉ‡เจฌเจฒ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ

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

เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจฆเจพ เจชเฉเจฐเจพเจฒเฉ‡เจ–

เจชเฉ‡เจธเจŸ เจ•เจฐเฉ‹, เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเฉ‹, เจธเจนเจฟเจ•เจฐเจฎเฉ€เจ†เจ‚ เจจเจพเจฒ เจธเจพเจ‚เจเจพ เจ•เจฐเฉ‹! เจฏเฉ‹เจœเจจเจพเจตเจพเจ‚ เจ†เจฐเจ•เจพเจˆเจต เจ•เฉ€เจคเฉ€เจ†เจ‚ เจฐเจนเจฟเจฃเจ—เฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ 'เจคเฉ‡ เจตเจพเจชเจธ เจ† เจธเจ•เจฆเฉ‡ เจนเฉ‹: explain.tensor.ru/archive

เจชเจฐ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจจเจนเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจ•เจฟ เจฆเฉ‚เจธเจฐเฉ‡ เจคเฉเจนเจพเจกเฉ€ เจฏเฉ‹เจœเจจเจพ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ, เจคเจพเจ‚ "เจชเฉเจฐเจพเจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจจเจพ เจ•เจฐเฉ‹" เจฌเจพเจ•เจธ เจจเฉ‚เฉฐ เจšเฉˆเฉฑเจ• เจ•เจฐเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹เฅค

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

เจธเจฐเฉ‹เจค: www.habr.com

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