EXPLAIN āĻ•ā§€ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¨ā§€āĻ°āĻŦ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ•āĻĨāĻž āĻŦāĻ˛āĻž āĻ¯āĻžāĻ¯āĻŧ

āĻāĻ•āĻœāĻ¨ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻ¤āĻžāĻ° DBA āĻŦāĻž āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ° āĻŽāĻžāĻ˛āĻŋāĻ• āĻāĻ•āĻœāĻ¨ PostgreSQL āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļāĻĻāĻžāĻ¤āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ¸āĻž āĻ•ā§āĻ˛āĻžāĻ¸āĻŋāĻ• āĻĒā§āĻ°āĻļā§āĻ¨āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻ•āĻ‡ āĻļā§‹āĻ¨āĻžāĻ¯āĻŧ: "āĻ•ā§‡āĻ¨ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻĄā§‡āĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ¤ā§‡ āĻāĻ¤ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§‡āĻ¯āĻŧ?"

āĻ•āĻžāĻ°āĻŖā§‡āĻ° āĻāĻ¤āĻŋāĻšā§āĻ¯āĻ—āĻ¤ āĻ¸ā§‡āĻŸ:

  • āĻ…āĻĻāĻ•ā§āĻˇ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ
    āĻ¯āĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ¯āĻŧā§‡āĻ• āĻšāĻžāĻœāĻžāĻ° āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• CTE-āĻ¤ā§‡ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ¨
  • āĻ…āĻĒā§āĻ°āĻžāĻ¸āĻ™ā§āĻ—āĻŋāĻ• āĻĒāĻ°āĻŋāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ¨
    āĻ¯āĻĻāĻŋ āĻ¸āĻžāĻ°āĻŖā§€āĻ¤ā§‡ āĻĄā§‡āĻŸāĻžāĻ° āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻŦāĻŖā§āĻŸāĻ¨ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻ—āĻ¤āĻŦāĻžāĻ°ā§‡āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ‚āĻ—ā§ƒāĻšā§€āĻ¤ āĻāĻ•āĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻ–ā§āĻŦ āĻ†āĻ˛āĻžāĻĻāĻž āĻšāĻ¯āĻŧ
  • āĻ¸āĻŽā§āĻĒāĻĻā§‡āĻ° āĻ‰āĻĒāĻ° "āĻĒā§āĻ˛āĻžāĻ—"
    āĻāĻŦāĻ‚ 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 āĻ•ā§€ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¨ā§€āĻ°āĻŦ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ•āĻĨāĻž āĻŦāĻ˛āĻž āĻ¯āĻžāĻ¯āĻŧ

āĻ¤āĻŦā§‡ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻŸāĻŋ āĻ†āĻ°āĻ“ āĻœāĻŸāĻŋāĻ˛ āĻšāĻ˛ā§‡ āĻ¤āĻŋāĻ¨āĻŋ āĻ‰āĻĻā§āĻ§āĻžāĻ°ā§‡ āĻ†āĻ¸āĻŦā§‡āĻ¨ āĻĒāĻŋāĻšāĻžāĻ°ā§āĻŸ āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ¨ā§‹āĻĄ āĻĻā§āĻŦāĻžāĻ°āĻž:

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);
    

āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻ—āĻžāĻ°

āĻĒā§‡āĻ¸ā§āĻŸ āĻ•āĻ°ā§āĻ¨, āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨, āĻ¸āĻšāĻ•āĻ°ā§āĻŽā§€āĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ­āĻžāĻ— āĻ•āĻ°ā§āĻ¨! āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻ—āĻžāĻ°āĻ­ā§āĻ•ā§āĻ¤ āĻĨāĻžāĻ•āĻŦā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻĒāĻ°ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨: āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž.tensor.ru/archive

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ…āĻ¨ā§āĻ¯āĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻĻā§‡āĻ–āĻ¤ā§‡ āĻ¨āĻž āĻšāĻžāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ "āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­ā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž" āĻŦāĻžāĻ•ā§āĻ¸āĻŸāĻŋ āĻšā§‡āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻ­ā§āĻ˛āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤

āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ‰āĻĻā§āĻ­ā§‚āĻ¤ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ‚ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨