เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒ

เบ„เปเบฒเบ–เบฒเบกเบ„เบฅเบฒเบชเบชเบดเบเบ—เบตเปˆเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ™เปเบฒเบกเบฒเปƒเบซเป‰ DBA เบ‚เบญเบ‡เบฅเบฒเบงเบซเบผเบทเป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบ—เบธเบฅเบฐเบเบดเบ”เบ™เปเบฒเบกเบฒเปƒเบซเป‰เบ—เบตเปˆเบ›เบถเบเบชเบฒ PostgreSQL เป€เบเบทเบญเบšเบชเบฐเป€เบซเบกเบตเบชเบฝเบ‡เบ”เบฝเบงเบเบฑเบ™: "เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบŠเป‰เป€เบงเบฅเบฒเบ”เบปเบ™เบซเบผเบฒเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเปเบฒเป€เบฅเบฑเบ”เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™?"

เบŠเบธเบ”เบ›เบฐเป€เบžเบ™เบตเบ‚เบญเบ‡เป€เบซเบ”เบœเบปเบ™:

  • เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš
    เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก CTEs เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เปƒเบ™เป„เบฅเบเบฐเบชเบญเบ‡เบชเบฒเบกเบชเบดเบšเบžเบฑเบ™เบšเบฑเบ™เบ—เบถเบ
  • เบชเบฐเบ–เบดเบ•เบดเบฅเป‰เบฒเบชเบฐเป„เบซเบก
    เบ–เป‰เบฒเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเบˆเบฒเบเบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเป‚เบ”เบ ANALYZE เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ
  • "เบชเบฝเบš" เบเปˆเบฝเบงเบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™
    เปเบฅเบฐเบšเปเปˆเบกเบตเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰เบ—เบตเปˆเบญเบธเบ—เบดเบ”เบ•เบปเบ™เบžเบฝเบ‡เบžเปเบ‚เบญเบ‡ CPU, gigabytes เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเป„เบ”เป‰เบ–เบทเบเบชเบนเบšเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เบซเบผเบทเปเบœเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบฑเบเบชเบฒ "เบ•เป‰เบญเบ‡เบเบฒเบ™" เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.
  • เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡ เบˆเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™

เปเบฅเบฐเบ–เป‰เบฒเบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบเบ—เบตเปˆเบˆเบฐเบˆเบฑเบšเปเบฅเบฐเบงเบดเป€เบ„เบฒเบฐ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ เปเบœเบ™โ€‹เบเบฒเบ™โ€‹เบชเบญเบšโ€‹เบ–เบฒเบกโ€‹, เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ เบญเบฐเบ—เบดเบšเบฒเบเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ (เบกเบฑเบ™เบ”เบตเบเบงเปˆเบฒ, เปเบ™เปˆเบ™เบญเบ™, เปƒเบซเป‰เบญเบฐเบ—เบดเบšเบฒเบเบ—เบฑเบ™เบ—เบต (เบงเบดเป€เบ„เบฒเบฐ, เบšเบฑเบŸเป€เบŸเบต) ...) เบซเบผเบท 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"

เปเบ•เปˆเบเบฒเบ™เบญเปˆเบฒเบ™เปเบœเบ™เบเบฒเบ™เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบก "เบˆเบฒเบเปเบœเปˆเบ™" เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเปเบฅเบฐเบšเปเปˆเบŠเบฑเบ”เป€เบˆเบ™:

  • เบ–เบทเบเบชเบฐเปเบ”เบ‡เบขเบนเปˆเปƒเบ™ node เบœเบปเบ™เบฅเบงเบกเป‚เบ”เบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบเปˆเบญเบ
    เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เปเป‰เบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡, เบซเบผเบทเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบ™เบตเป‰เบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป„เบ”เป‰เบ™เปเบฒเป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเปเบœเปˆเบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฅเบปเบšเบซเบ™เบถเปˆเบ‡เบˆเบฒเบเบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡.
  • เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบงเบฅเบฒ node เบ„เบนเบ™เบ”เป‰เบงเบ loops
    เปเบกเปˆเบ™เปเบฅเป‰เบง, เบเบฒเบ™เบซเบฑเบเบฅเบปเบšเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ” "เบขเบนเปˆเปƒเบ™เบซเบปเบง" - เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบงเบฅเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบชเบฐเปเบ”เบ‡เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ node, เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบกเบตเบซเบผเบฒเบเบฎเป‰เบญเบเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ.
  • เบ”เบต, เปเบฅเบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบฎเปˆเบงเบกเบเบฑเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ•เบปเป‰เบ™เบ•เป - เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบœ "เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบญเปˆเบญเบ™เปเบญเบ—เบตเปˆเบชเบธเบ”"?

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบญเบฐเบ—เบดเบšเบฒเบเบชเบดเปˆเบ‡เบ—เบฑเบ‡เปเบปเบ”เบ™เบตเป‰เปƒเบซเป‰เบเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบซเบผเบฒเบเบฎเป‰เบญเบเบ„เบปเบ™, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเบˆเบฒเบเบžเบฒเบเบ™เบญเบเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเปเบ™เบงเบ™เบตเป‰:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒ

เปเบฅเบฐเบ™เบฑเป‰เบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ ...

เป€เบ„เบทเปˆเบญเบ‡เบกเบท

เปƒเบ™เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบฅเบงเบšเบฅเบงเบกเบ—เบธเบเบเบปเบ™เป„เบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒ "เปƒเบœเบ„เบงเบ™เบ•เปเบฒเบ™เบดเบ•เบดเบ•เบฝเบ™เปเบฅเบฐเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”" เบ•เบฒเบกเปเบœเบ™เบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป. เบ”เบต, เปเบฅเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเบฑเบšเบŠเบธเบกเบŠเบปเบ™.
เบžเบปเบšโ€‹เปเบฅเบฐโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ - เบญเบฐเบ—เบดเบšเบฒเบ.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

เบšเปเปˆเปเบกเปˆเบ™เปเบ—เป‰.

เปเบ•เปˆเปเบšเบšเบ™เบตเป‰, เปƒเบ™เบฎเบนเบšเปเบšเบšเบซเบเปเป‰เป€เบกเบทเปˆเบญเบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ–เบทเบเปเบเบเบญเบญเบ, เบกเบฑเบ™เบˆเบฐเปเบˆเป‰เบ‡เบเบงเปˆเบฒ:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒ

เปเบ•เปˆเบ–เป‰เบฒเปเบœเบ™เบเบฒเบ™เบชเบฑเบšเบชเบปเบ™เบซเบผเบฒเบ, เบฅเบฒเบงเบˆเบฐเป€เบ‚เบปเป‰เบฒเบกเบฒเบŠเปˆเบงเบ piechart เบเบฒเบ™เปเบˆเบเบขเบฒเบเป€เบงเบฅเบฒ เป‚เบ”เบ nodes:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒ

เบ”เบต, เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบฅเบฒเบงเบเปเบฒเบฅเบฑเบ‡เบฎเบตเบšเบฎเป‰เบญเบ™เบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบ เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เบงเบฒเบกเบ„เบทเบšเปœเป‰เบฒ:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒ

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เป€เบฅเบฑเบเป†เบ™เป‰เบญเบเป† เป€เบกเบทเปˆเบญเปเบœเบ™เบเบฒเบ™เปƒเบ”เปœเบถเปˆเบ‡เบญเบฒเบ”เบกเบตเบซเบผเบฒเบเบเบงเปˆเบฒเปœเบถเปˆเบ‡เบฎเบฒเบเบ•เบปเบงเบˆเบดเบ‡:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒ

เบ‚เปเป‰เบ„เบถเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡

เบ”เบต, เบ–เป‰เบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เปเบœเบ™เบเบฒเบ™เปเบฅเบฐเบˆเบธเบ”เป€เบˆเบฑเบšเบ›เบงเบ”เบ‚เบญเบ‡เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบงเบฒเบ‡เป„เบงเป‰เปเบฅเป‰เบงเปเบฅเบฐเป€เบซเบฑเบ™เป„เบ”เป‰, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบˆเบถเปˆเบ‡เบšเปเปˆเป€เบ™เบฑเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบšเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™ "เบžเบฒเบชเบฒเบฅเบฑเบ”เป€เบŠเบ"?

เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒเบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ„เบนเปˆโ€‹เบ™โ€‹เปˆโ€‹เบถโ€‹เบ‚เบญเบ‡โ€‹เบญเบฒเบโ€‹เปเบโ€‹เบฑโ€‹เบชโ€‹เปเบšเบšโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒโ€‹เบ”เบฑเปˆเบ‡โ€‹เบเปˆเบฒเบงโ€‹.

เป‚เบ›เบฃเปเบเบฃเบกเบชเบญเบšเบ–เบฒเบกเปเบšเบšเปเบ–เบงเบ•เปเปˆเปเบ–เบง

เบ”เบฝเบงเบ™เบตเป‰, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบญเบปเบฒเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปƒเบชเปˆเปเบœเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เปƒเบ™เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเปเบ•เปˆเบฅเบฐเบ„เบปเบ™ - เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒ

...เบซเบผเบทโ€‹เปเบกเปˆเบ™โ€‹เปเบ•เปˆโ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบ™เบตเป‰โ€‹:

เบชเบดเปˆเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเปเบกเปˆเบ™เบ‡เบฝเบšเบเปˆเบฝเบงเบเบฑเบšเปเบฅเบฐเป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบงเบปเป‰เบฒ

เบเบฒเบ™เบ›เปˆเบฝเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป

เบ–เป‰เบฒเบ—เปˆเบฒเบ™ "เปเบ™เบš" เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฑเบšเปเบœเบ™เบเบฒเบ™, เปเบ•เปˆเบเบฑเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบˆเบฒเบเป€เบชเบฑเป‰เบ™เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบฑเบ”เบฅเบญเบเบกเบฑเบ™เปƒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบซเบ™เบถเปˆเบ‡:

  • เบ”เป‰เบงเบเบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบกเบนเบ™เบ„เปˆเบฒเปƒเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก
    เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบปเบ‡เบเปˆเบฝเบงเบเบฑเบšเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ•เบทเปˆเบกเบญเบตเบ

    SELECT 'const', 'param'::text;
  • เบ”เป‰เบงเบเบเบฒเบ™เบ›เปˆเบฝเบ™เบ„เปˆเบฒเบœเปˆเบฒเบ™ PREPARE/EXECUTE
    เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบ•เบฒเบกเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบœเบนเป‰เบˆเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เป€เบกเบทเปˆเบญเบžเบฒเบเบชเปˆเบงเบ™ parametric เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบฐเป€เบฅเบตเบ - เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบšเปˆเบ‡เบชเปˆเบงเบ™.

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

เบฎเบงเบšเบฎเบงเบกเปเบœเบ™เบเบฒเบ™

เบงเบฒเบ‡, เบงเบดเป€เบ„เบฒเบฐ, เปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฑเบšเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™! เปเบœเบ™เบเบฒเบ™เบˆเบฐเบเบฑเบ‡เบ„เบปเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰ เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบžเบงเบเบกเบฑเบ™เป„เบ”เป‰เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡: เบญเบฐเบ—เบดเบšเบฒเบ.tensor.ru/archive

เปเบ•เปˆเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ„เบปเบ™เบญเบทเปˆเบ™เป€เบซเบฑเบ™เปเบœเบ™เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบขเปˆเบฒเบฅเบทเบกเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเปˆเบญเบ‡ "เบซเป‰เบฒเบกเป€เบœเบตเบเปเบœเปˆเปƒเบ™เปเบŸเป‰เบก".

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›เบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเปเบฅเบฐเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบœเบ™เบเบฒเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™