ΠΠ»Π°ΡΠΈΡΠ΅ΡΠΊΠΈΡΡ Π²ΡΠΏΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡ Π·Π°Π΄Π°Π²Π° Π½Π° ΡΠ²ΠΎΡ DBA ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠ»ΡΠ°Π½Ρ Π½Π° PostgreSQL, ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π·Π²ΡΡΠΈ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½: βΠΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΎΡΠ½Π΅ΠΌΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅?β
Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠΈΡΠΈΠ½ΠΈ:
- Π½Π΅Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ
ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ΡΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΠΠ ΠΠ‘ΠͺΠΠΠΠΠΠ’Π ΠΊΡΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ CTE Π½Π°Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π΅ΡΠ΅ΡΠΊΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ Π·Π°ΠΏΠΈΡΠ° - ΠΎΡΡΠ°ΡΡΠ»Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
Π°ΠΊΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π²Π΅ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ ΠΎΡ ΡΠΎΠ²Π°, ΡΡΠ±ΡΠ°Π½ΠΎ ΠΎΡ ANALYZE ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΡΡ - βΠ²ΠΊΠ»ΡΡΠ²Π°Π½Π΅β Π½Π° ΡΠ΅ΡΡΡΡΠΈ
ΠΈ Π²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½Π° ΠΌΠΎΡΠ½ΠΎΡΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°, Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠΈ ΠΏΠ°ΠΌΠ΅Ρ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠΌΠΏΠ²Π°Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈΠ»ΠΈ Π΄ΠΈΡΠΊΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ Ρ Π²ΡΠΈΡΠΊΠΈ βΠΆΠ΅Π»Π°Π½ΠΈΡβ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ - Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΠ°ΡΠΈ ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ
Π Π°ΠΊΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈΡΠ΅ ΡΠ° Π΄ΠΎΡΡΠ° ΡΡΡΠ΄Π½ΠΈ Π·Π° ΡΠ»Π°Π²ΡΠ½Π΅ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅, ΡΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ Π½ΠΈ ΡΡΡΠ±Π²Π° ΠΏΠ»Π°Π½ Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π°
ΠΠΎ, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ Π² ΡΡΡΠ°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ,
βΠ Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ»Π°Π½ Π΅ ΠΈΠ·ΠΊΡΡΡΠ²ΠΎ ΠΈ Π·Π° Π΄Π° Π³ΠΎ ΠΎΠ²Π»Π°Π΄Π΅Π΅ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΎΠΏΠΈΡ...β
ΠΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈ Π±Π΅Π· Π½Π΅Π³ΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ!
ΠΠ°ΠΊ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠ»Π°Π½ΡΡ Π·Π° Π·Π°ΡΠ²ΠΊΠ°? ΠΠ΅ΡΠΎ ΡΠ°ΠΊΠΎΠ²Π°:
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"
ΠΠΎ ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΠΏΠ»Π°Π½Π° Π² ΡΠ΅ΠΊΡΡ βΠΎΡ Π»ΠΈΡΡΠ°β Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π½ΠΎ ΠΈ Π½Π΅ΡΡΠ½ΠΎ:
- ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° Π²ΡΠ² Π²ΡΠ·Π΅Π»Π° ΡΡΠΌΠ° ΠΏΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΈ
ΡΠΎΠ΅ΡΡ, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΅ ΠΎΡΠ½Π΅Π»ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π²ΡΠ·Π΅Π» ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΊΠΎ ΡΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π΅ ΠΈΠ·Π²Π΅Π»ΠΎ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π΄ΠΈΡΠΊΠ°, ΡΡΡΠ±Π²Π° ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΡΠ΅ Π΅Π΄Π½ΠΎΡΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΎΡΠΎ - Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΅ Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π²ΡΠ·Π΅Π» ΡΠΌΠ½ΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎ ΡΠΈΠΊΠ»ΠΈ
Π΄Π°, ΠΈΠ·Π²Π°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π½Π°ΠΉ-ΡΠ»ΠΎΠΆΠ½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ "Π² Π³Π»Π°Π²Π°ΡΠ°" - Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ ΠΊΠ°ΡΠΎ ΡΡΠ΅Π΄Π½ΠΎ Π·Π° Π΅Π΄Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ·Π΅Π» ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΡΡΠΎΡΠΈΡΠΈ ΠΎΡ ΡΡΡ - Π΄ΠΎΠ±ΡΠ΅, ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π·Π°Π΅Π΄Π½ΠΎ Π½ΠΈ ΠΏΡΠ΅ΡΠΈ Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ Π²ΡΠΏΡΠΎΡ - ΡΠ°ΠΊΠ° ΡΠ΅ ΠΊΠΎΠΉ "Π½Π°ΠΉ-ΡΠ»Π°Π±ΠΎΡΠΎ Π·Π²Π΅Π½ΠΎ"?
ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Ρ ΠΌΠ΅ Π΄Π° ΠΎΠ±ΡΡΠ½ΠΈΠΌ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎΡΡΠΎΡΠΈΠ½ Π½Π°ΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΡΠ°Π·Π±ΡΠ°Ρ ΠΌΠ΅, ΡΠ΅ ΠΎΡΡΡΡΠ°Π½ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΡΠ°ΠΊΠ°:
Π ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ...
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
Π Π½Π΅Π³ΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ°Ρ
ΠΌΠ΅ Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ βΠΊΠΎΠΉ Π΅ Π²ΠΈΠ½ΠΎΠ²Π΅Π½ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈβ ΡΠΏΠΎΡΠ΅Π΄ ΠΏΠ»Π°Π½Π° ΠΈ Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. Π, ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΠΎΠΏΠΈΡΠ° ΡΠΈ Ρ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ°.
ΠΠ°ΠΏΠΎΠ·Π½Π°ΠΉΡΠ΅ ΡΠ΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ -
ΠΠΈΠ΄ΠΈΠΌΠΎΡΡ Π½Π° ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅
ΠΠ΅ΡΠ½ΠΎ Π»ΠΈ Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°?
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
ΠΠ΅ ΠΎΡΠ΅Π½Ρ.
ΠΠΎ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π°, Π² ΡΡΠΊΡΠ°ΡΠ΅Π½ Π²ΠΈΠ΄ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΈ ΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ, Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΡΠ½ΠΎ:
ΠΠΎ Π°ΠΊΠΎ ΠΏΠ»Π°Π½ΡΡ Π΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ΅Π½, ΡΠΎΠΉ ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ΅ Π½Π° ΠΏΠΎΠΌΠΎΡ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΏΠΎ Π²ΡΠ·Π»ΠΈ:
Π, Π·Π° Π½Π°ΠΉ-ΡΡΡΠ΄Π½ΠΈΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΠΈ ΡΠΎΠΉ Π±ΡΡΠ·Π° Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° Π½Π° Π½Π°ΠΏΡΠ΅Π΄ΡΠΊΠ°:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ° Π΄ΠΎΡΡΠ° Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»Π½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ»Π°Π½ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊΠΎΡΠ΅Π½:
Π‘ΡΡΡΠΊΡΡΡΠ½ΠΈ ΡΠ»ΠΈΠΊΠΈ
Π, Π°ΠΊΠΎ ΡΡΠ»Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° ΠΏΠ»Π°Π½Π° ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ Π²ΡΠ·ΠΏΠ°Π»Π΅Π½ΠΈ ΠΌΠ΅ΡΡΠ° Π²Π΅ΡΠ΅ ΡΠ° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΈ, Π·Π°ΡΠΎ Π½Π΅ Π³ΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π΅ΡΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ Π½Π΅ Π³ΠΈ ΠΎΠ±ΡΡΠ½ΠΈΡΠ΅ Π½Π° βΡΡΡΠΊΠΈ Π΅Π·ΠΈΠΊβ?
ΠΠ΅ΡΠ΅ ΡΠΌΠ΅ ΡΡΠ±ΡΠ°Π»ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠ·ΠΈΠ½ΠΈ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ.
ΠΡΠΎΡΠ°ΠΉΠ»ΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΡΠ΅Π΄ ΠΏΠΎ ΡΠ΅Π΄
Π‘Π΅Π³Π°, Π°ΠΊΠΎ Π½Π°Π»ΠΎΠΆΠΈΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π²ΡΡΡ Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ ΠΏΠ»Π°Π½, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΅ ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½ΠΎ Π·Π° Π²ΡΡΠΊΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈΠ·ΡΠ²Π»Π΅Π½ΠΈΠ΅ - Π½Π΅ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:
...ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ ΡΠ°ΠΊΠ°:
ΠΠΎΠ΄ΠΌΡΠ½Π° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² Π·Π°ΡΠ²ΠΊΠ°
ΠΠΊΠΎ ΡΡΠ΅ βΠΏΡΠΈΠΊΠ°ΡΠΈΠ»ΠΈβ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ ΠΏΠ»Π°Π½Π°, Π½ΠΎ ΠΈ Π½Π΅ΠΉΠ½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΎΡ ΡΠ΅Π΄Π° DETAIL Π½Π° Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π³ΠΎ ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ Π² Π΅Π΄Π½Π° ΠΎΡ ΠΎΠΏΡΠΈΠΈΡΠ΅:
- ΡΡΡ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π² Π·Π°ΡΠ²ΠΊΠ°ΡΠ°
Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅SELECT 'const', 'param'::text;
- ΡΡΡ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΡΡΠ΅Π· PREPARE/EXECUTE
Π΄Π° Π΅ΠΌΡΠ»ΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ½Π°ΡΠ° ΡΠ°ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½Π° - Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Π²ΡΡΡ Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈDEALLOCATE ALL; PREPARE q(text) AS SELECT 'const', $1::text; EXECUTE q('param'::text);
ΠΡΡ ΠΈΠ² Π½Π° ΠΏΠ»Π°Π½ΠΎΠ²Π΅
ΠΠ°Π»Π΅ΠΏΠ΅ΡΠ΅, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅, ΡΠΏΠΎΠ΄Π΅Π»Π΅ΡΠ΅ Ρ ΠΊΠΎΠ»Π΅Π³ΠΈ! ΠΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΎΡΡΠ°Π½Π°Ρ Π°ΡΡ
ΠΈΠ²ΠΈΡΠ°Π½ΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΡΡ
ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ:
ΠΠΎ Π°ΠΊΠΎ Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄ΡΡΠ³ΠΈΡΠ΅ Π΄Π° Π²ΠΈΠΆΠ΄Π°Ρ Π²Π°ΡΠΈΡ ΠΏΠ»Π°Π½, Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΎΡΠΌΠ΅ΡΠΊΠ° Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΡΠ΅ΡΠΎ βΠ½Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΉΡΠ΅ Π² Π°ΡΡ ΠΈΠ²β.
Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ Π·Π° ΡΡΡΠ΄Π½ΠΎΡΡΠΈΡΠ΅ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ»Π°Π½.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com