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 рдХреЗ рдмрд╛рд░реЗ рдорд╛ рдореМрди рдЫ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдмреЛрд▓реНрдиреЗ

рд░ рдпрд╕рдХреЛ рдорддрд▓рдм рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреНрдЫ ...

рдЙрдкрдХрд░рдг

рдпрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рдпреЛрдЬрдирд╛ рд░ рдЕрдиреБрд░реЛрдз рдЕрдиреБрд╕рд╛рд░ "рдХрд╕рд▓рд╛рдИ рджреЛрд╖ рджрд┐рдиреЗ рд░ рдХреЗ рдЧрд░реНрдиреЗ" рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реНрдиреЗ рд╕рдмреИ рдореБрдЦреНрдп рдореЗрдХрд╛рдирд┐рдХрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдпреМрдВред рдареАрдХ рдЫ, рд░ рд╕рдореБрджрд╛рдпрд╕рдБрдЧ рдЖрдлреНрдиреЛ рдЕрдиреБрднрд╡рдХреЛ рдЕрдВрд╢ рд╕рд╛рдЭрд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рднреЗрдЯреНрдиреБрд╣реЛрд╕реН рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН - рд╡реНрдпрд╛рдЦреНрдпрд╛.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 рдХреЗ рдмрд╛рд░реЗ рдорд╛ рдореМрди рдЫ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдмреЛрд▓реНрдиреЗ

рдЕрдиреБрд░реЛрдзрдорд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрджреИ

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛрдЬрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдз рдорд╛рддреНрд░ рд╣реЛрдЗрди, рддрд░ рд▓рдЧрдХреЛ DETAIL рд▓рд╛рдЗрдирдмрд╛рдЯ рдпрд╕рдХреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрдирд┐ "рд╕рдВрд▓рдЧреНрди" рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

  • рдЕрдиреБрд░реЛрдзрдорд╛ рдореВрд▓реНрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирдХреЛ рд╕рд╛рде
    рддрдкрд╛рдИрдВрдХреЛ рдЖрдзрд╛рд░ рд░ рдердк рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдЩрдорд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐

    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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди