{"id":465213,"date":"2025-06-30T15:00:55","date_gmt":"2025-06-30T15:00:55","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=465213"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=465213","title":{"rendered":"<span>\u041e\u0431 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u043b\u0430\u043d\u0430\u043c\u0438\u00a0 PREPARED-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 PostgreSQL<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u041f\u043e\u0431\u044b\u0432\u0430\u0432 \u043d\u0430 <\/em><a href=\"http:\/\/PGConf.DE\" rel=\"noopener noreferrer nofollow\"><em>PGConf.DE<\/em><\/a><em>\u20192025 \u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044f \u0442\u0430\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Postgres \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u044f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0441\u043b\u044b\u0448\u0430\u043b \u043c\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0430\u043a\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0448\u0430\u0433, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430 \u0441\u043e\u0442\u043d\u044e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432. \u0427\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f.<\/em><\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PREPARED statements, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0438\u0445 \u0432 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u043a <em>parse tree<\/em> \u0438 <em>query plan.<\/em> \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u0438\u043a\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 (\u0441\u043c. <a href=\"https:\/\/github.com\/danolivo\/conf\/blob\/main\/Scripts\/partitioned-tbl-example.sql\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a>):<\/p>\n<pre><code class=\"sql\">EXPLAIN (ANALYZE, COSTS OFF, MEMORY, TIMING OFF) SELECT * FROM test WHERE y = 127;  \/* ...    -&gt;  Seq Scan on l256 test_256          Filter: (y = 127)  Planning:    Buffers: shared hit=1536    Memory: used=3787kB  allocated=4104kB  Planning Time: 61.272 ms  Execution Time: 4.929 ms *\/<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 256 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 60 \u043c\u0441, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 &#8212; 5 \u043c\u0441. \u0422\u0430\u043a\u0436\u0435, \u0432 \u0445\u043e\u0434\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043e 4 \u041c\u0411 RAM \u0438 \u043f\u043e\u0442\u0440\u043e\u0433\u0430\u043d\u043e 1500 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0411\u0414. \u041c\u043d\u0435 \u0431\u044b \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u043f\u0440\u043e\u0434\u0435!<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 <em>custom \u043f\u043b\u0430\u043d<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043f\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u0432 <em>&#171;\u041a\u044d\u0448 \u043f\u043b\u0430\u043d\u043e\u0432&#187;<\/em> \u0431\u044d\u043a\u0435\u043d\u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 PREPARE:<\/p>\n<pre><code class=\"sql\">PREPARE tst (integer) AS SELECT * FROM test WHERE y = $1; EXPLAIN (ANALYZE, COSTS OFF, MEMORY, TIMING OFF) EXECUTE tst(127);  \/* ...    -&gt;  Seq Scan on l256 test_256          Filter: (y = $1)  Planning:    Buffers: shared hit=1536    Memory: used=3772kB  allocated=4120kB  Planning Time: 59.525 ms  Execution Time: 5.184 ms *\/<\/code><\/pre>\n<p>\u0422\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f custom \u043f\u043b\u0430\u043d. \u0417\u0430\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u044d\u043a\u0435\u043d\u0434 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0439 \u201cgeneric\u201d \u043f\u043b\u0430\u043d:<\/p>\n<pre><code class=\"sql\">SET plan_cache_mode = 'force_generic_plan'; EXPLAIN (ANALYZE, COSTS OFF, MEMORY, TIMING OFF) EXECUTE tst(127);  \/* ...   -&gt;  Seq Scan on l256 test_256          Filter: (y = $1)  Planning:    Memory: used=4kB  allocated=24kB  Planning Time: 0.272 ms  Execution Time: 2.810 ms *\/<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0442.\u043d. generic \u043f\u043b\u0430\u043d, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u0445 \u0436\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0438 custom \u043f\u043b\u0430\u043d. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043b\u0430\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043a\u044d\u0448\u0430. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 0.2 \u043c\u0441, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 &#8212; 24 \u043a\u0431, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u0411\u0414 \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u043e\u043e\u0431\u0449\u0435. \u042f\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u0442!<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 PREPARE \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u0442\u043e\u0440\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u043a\u0435\u043f\u0441\u0438\u0441, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 (\u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c) \u0432 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 generic \u043f\u043b\u0430\u043d\u0430\u043c\u0438, \u0438\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 (\u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c) \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 custom \u043f\u043b\u0430\u043d\u044b (<a href=\"https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:7333171071015100416?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7333171071015100416%2C7333270833563320321%29&amp;replyUrn=urn%3Ali%3Acomment%3A%28activity%3A7333171071015100416%2C7333392449064550400%29&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287333270833563320321%2Curn%3Ali%3Aactivity%3A7333171071015100416%29&amp;dashReplyUrn=urn%3Ali%3Afsd_comment%3A%287333392449064550400%2Curn%3Ali%3Aactivity%3A7333171071015100416%29\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0427\u0442\u043e\u0431\u044b \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c generic \u043f\u043b\u0430\u043d\u043e\u0432 \u0438 \u0432 \u0447\u0435\u043c \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u044f \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 &#8212; \u043e\u0431\u0437\u043e\u0440 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443.<\/p>\n<p>\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f plancache, \u0438\u043b\u0438 &#171;<em>\u041a\u044d\u0448 \u043f\u043b\u0430\u043d\u043e\u0432<\/em>&#187; \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 2007 \u0433\u043e\u0434\u0443 \u0441 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c b9527e9. \u0412 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 PREPARED-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 Postgres \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e generic \u043f\u043b\u0430\u043d\u043e\u043c \u0438 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u043d\u0430 \u0432\u043e\u0432\u0441\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Oracle, SQL Server \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u0431\u0440\u0430\u0442\u044c\u0435\u0432 \u043f\u043e \u0446\u0435\u0445\u0443, \u0432 Postgres \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 generic \u043f\u043b\u0430\u043d \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u201c\u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u043d\u043e\u0433\u043e\u201d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 (\u0441\u043c., \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"http:\/\/web.archive.org\/web\/20080929185556\/http:\/\/www.db2ude.com\/?q=node%2F73\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/oracle-base.com\/articles\/11g\/adaptive-cursor-sharing-11gr1\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/www.mssqltips.com\/sqlservertip\/7491\/prepare-sql-statement-spprepare-spexecute\/\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/learn.microsoft.com\/en-us\/answers\/questions\/262485\/sql-server-how-to-determine-parameter-sniffing-pro\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0422\u043e \u0435\u0441\u0442\u044c, \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 &#171;127&#187;  \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u0430 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f generic-\u043f\u043b\u0430\u043d\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u043c\u0435\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, generic \u043f\u043b\u0430\u043d \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0445\u0443\u0436\u0435 \u0441\u0432\u043e\u0435\u0433\u043e custom \u0441\u043e\u0431\u0440\u0430\u0442\u0430. \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 (\u0441\u043c. <a href=\"https:\/\/github.com\/danolivo\/conf\/blob\/main\/Scripts\/time-range-example.sql\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442<\/a>):<\/p>\n<pre><code class=\"sql\">EXPLAIN SELECT * FROM test_2 WHERE   start_date &gt; '2025-06-30'::timestamp - '7 days'::interval; \/*  Index Scan using test_2_start_date_idx on test_2  (rows=739 width=34)    Index Cond: (start_date &gt; '2025-06-23 00:00:00'::timestamp) *\/  PREPARE tst3(timestamp) AS SELECT * FROM test_2   WHERE start_date &gt; $1 - '7 days'::interval;  EXPLAIN EXECUTE tst3('2025-06-30'::timestamp); \/*  Seq Scan on test_2  (rows=333333 width=34)    Filter: (start_date &gt; ($1 - '7 days'::interval)) *\/<\/code><\/pre>\n<p>\u041d\u0430\u0432\u0441\u043a\u0438\u0434\u043a\u0443, \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b: \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u043d\u0435\u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u044d\u0441\u0442\u0438\u043c\u0430\u0446\u0438\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0432 33%; \u0434\u043b\u044f\u00a0 range-\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 0.5% \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0430 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MCV-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 ndistinct. \u0422\u0430\u043a\u0436\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b.<\/p>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u043e \u043a \u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0439 \u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u0434\u043a\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 PREPARE\/EXECUTE statement \u0438 \u0432 2011 \u0433\u043e\u0434\u0443 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b\u0430 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u0435\u043b\u0430 \u043a \u043a\u043e\u043c\u043c\u0438\u0442\u0443 e6faf91, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432\u0448\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 custom \u0438 generic \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u043f\u043b\u0430\u043d\u0430 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0435.<\/p>\n<p>\u0414\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f \u044d\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0441 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0430\u0437\u0440\u0435\u0432\u0448\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c, \u0447\u0442\u043e PREPARED statements \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e generic-\u043f\u043b\u0430\u043d\u0430\u043c\u0438 (Mark Mielke, <a href=\"https:\/\/www.postgresql.org\/message-id\/4B7176DD.5060305%40mark.mielke.cc\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0422\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u043d \u0445\u043e\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 &#8212; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b ANALYZE \u0438\u043b\u0438 ALTER TABLE, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u043c\u0435\u043b \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0445\u0443\u0434\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u0434\u0435\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c generic-\u043f\u043b\u0430\u043d (Jeroen Vermeulen, <a href=\"https:\/\/www.postgresql.org\/message-id\/4B715056.8060103%40xs4all.nl\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0412\u0432\u0435\u0441\u0442\u0438 threshold \u043f\u043e \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u201c\u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/ \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u201c &#8212; \u0415\u0441\u043b\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 100, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e generic \u043f\u043b\u0430\u043d, \u0435\u0441\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 0.01 &#8212; \u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e custom-\u043f\u043b\u0430\u043d. (Bart Samwel <a href=\"https:\/\/www.postgresql.org\/message-id\/ded01eb21002110409m5b729dffn168061dae0cad213%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>. Yeb Havinga \u043e\u043f\u043f\u043e\u043d\u0438\u0440\u0443\u0435\u0442 (<a href=\"https:\/\/www.postgresql.org\/message-id\/4B7408EE.5020905%40gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>) \u044d\u0442\u043e\u0439 \u0438\u0434\u0435\u0435 &#8212; \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u201c\u0432\u0440\u0435\u043c\u044f\u201c). \u041e\u0434\u043d\u0430\u043a\u043e, \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0430 Jeroen Vermeulen \u0438 Greg Stark (<a href=\"https:\/\/www.postgresql.org\/message-id\/407d949e1002160622l65719aabpf68165681ee8b6be%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>) c \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u043e\u0439, \u0447\u0442\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 stddev \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0447\u0442\u043e \u0434\u0430\u0441\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f\/\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 (Greg Stark, <a href=\"https:\/\/www.postgresql.org\/message-id\/407d949e1002160622l65719aabpf68165681ee8b6be%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u0438\u00a0 generic \u043f\u043b\u0430\u043d, \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u0441\u0442\u043e\u0432 (Tom Lane, <a href=\"https:\/\/www.postgresql.org\/message-id\/10153.1265905060%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 generic \u043f\u043b\u0430\u043d\u043e\u0432 \u0432\u043e\u0432\u0441\u0435, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0443\u0434\u0435\u0448\u0435\u0432\u0438\u0432 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0443\u0442\u0451\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u201c\u043a\u044d\u0448\u0430\u201d \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PlannerInfo \u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 jointree \/ \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0433\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f (Yeb Havinga, <a href=\"https:\/\/www.postgresql.org\/message-id\/4B715C23.30101%40gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c generic\u00a0 \u043f\u043b\u0430\u043d\u044b, \u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432 MCV \u0438\u043b\u0438 \u043d\u0435\u0442 (Robert Haas (<a href=\"https:\/\/www.postgresql.org\/message-id\/603c8f071002252001n6b2467bal2e6bae26a9a2b79a%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>,<a href=\"https:\/\/www.postgresql.org\/message-id\/CA%2BTgmobgD_UZRs44cOutY1odNbR0C_HJSxvx_dMREvz-CwuiaQ%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\"> link<\/a>), \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u043e Jeff Davis).<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f <em>re-optimisation<\/em> (Richard Huxton, <a href=\"https:\/\/www.postgresql.org\/message-id\/4B716828.2030303%40archonet.com\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0430\u0441\u044c \u0441\u043a\u043e\u0440\u0435\u0435 \u0432 \u0444\u043e\u0440\u043c\u0435 \u043c\u0435\u0447\u0442\u044b, \u043d\u043e \u0443\u0436\u0435 \u043a 2020 \u0433\u043e\u0434\u0443 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0437\u0440\u0435\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u0432 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0441\u0440\u043e\u043a\u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0438\u0434\u0435\u044e (\u0441\u043c. <a href=\"https:\/\/postgrespro.com\/docs\/enterprise\/16\/realtime-query-replanning\" rel=\"noopener noreferrer nofollow\">replan<\/a>). \u0417\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u0432 \u044f\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f\u00a0 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0447\u0435\u0440\u0435\u0437 simple-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0441\u0442\u044d\u0439\u0442\u043c\u0435\u043d\u0442\u043e\u0432, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u043c\u0438 \u0432 <a href=\"https:\/\/postgrespro.com\/docs\/enterprise\/15\/sr-plan\" rel=\"noopener noreferrer nofollow\">sr_plan<\/a> (Robert Haas, <a href=\"https:\/\/www.postgresql.org\/message-id\/CA%2BTgmoZCOaKs1pGOmR8wtpHOw6uKiScswKzm%2B9fNx8w4visoQQ%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a> \u0438 \u0438\u0434\u0435\u044f Yeb Havinga \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0442\u043e\u0433\u0434\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0432\u0448\u0435\u0433\u043e queryId <a href=\"https:\/\/www.postgresql.org\/message-id\/4E3A6278.3050404%40gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 2011 \u0433\u043e\u0434\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0438\u0434\u0435\u044f one-shot plan (Simon Riggs, <a href=\"https:\/\/www.postgresql.org\/message-id\/BANLkTikAN%3Dg1oCC%2BtY72o7FFH0OjF%2BYy%3DA%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u043c\u044b\u0441\u043b \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043b\u0430\u043d\u043e\u0432 &#8212; \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0421\u0423\u0411\u0414, \u0447\u0442\u043e \u043f\u043b\u0430\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d, \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u0441\u0432\u044f\u0437\u043a\u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438\u0434\u0435\u0438 Simon \u043f\u0440\u0438\u0432\u0451\u043b \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 &#8212; \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c partition pruning. \u0412 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443, Bruce Momjan \u043e\u0437\u0432\u0443\u0447\u0438\u043b \u0438\u0434\u0435\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 one-shot plan &#8212; \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440\u043d\u044b\u0439 \u043a\u044d\u0448 \u0447\u0442\u043e\u0431\u044b \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430.<\/p>\n<p>\u0412 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0444\u0438\u0447\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b Tom Lane (<a href=\"https:\/\/www.postgresql.org\/message-id\/7898.1312214100%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0418 \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b \u043e\u043d \u0435\u0451 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0436\u0430\u043b\u043e\u0431 \u043d\u0430 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e \u0432<a href=\"https:\/\/www.postgresql.org\/docs\/current\/ecpg-dynamic.html\" rel=\"noopener noreferrer nofollow\"> dynamic SQL<\/a> \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 (<a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/03E840D17E263A48A5766AD576E0423A03DF0A266B%40exch-mbx-111.vmware.com\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CAD4%2B%3DqWnGU0qi%2Biq%3DEPh6EGPuUnSCYsGDTgKazizEvrGgjo0Sg%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0433\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u0430\u0441\u044c \u043e\u0442 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0434\u0435\u0438 Simon Riggs \u0438 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b SPI, PREPARE \u0438 extended protocol \u0447\u0435\u0440\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 plancache. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f, \u0445\u043e\u0442\u044f \u0438 \u0434\u0438\u0441\u043a\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0437\u0434\u043d\u0435\u0435 (<a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CA%2BTgmoYqKRj9BozjB-%2BtLQgVkSvzPFWBEzRF4PM2xjPOsmFRdw%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CABRT9RC-1wGxZC_Z5mwkdk70fgY2DRX3sLXzdP4voBKuKPZDow%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<p>\u0418\u0434\u0435\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435 \u043f\u0440\u0438\u0436\u0438\u043b\u0430\u0441\u044c \u0438\u0437-\u0437\u0430 \u0432\u043e\u0437\u0440\u0430\u0436\u0435\u043d\u0438\u044f Tom Lane (<a href=\"https:\/\/www.postgresql.org\/message-id\/raw\/25760.1357800208%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0441\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0441\u0435\u0431\u044f \u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.<\/p>\n<p>\u0412 2017 \u0433\u043e\u0434\u0443 Pavel Stehule \u043f\u043e\u0434\u043d\u044f\u043b \u0442\u0435\u043c\u0443 \u044f\u0432\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u043c \u043f\u043b\u0430\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a plancache (<a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CAFj8pRAGLaiEm8ur5DWEBo7qHRWTk9HxkuUAz00CZZtJj-LkCA%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a\u00a0 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>plan_cache_mode<\/code> \u0438 \u0434\u0432\u0443\u0445 \u043e\u043f\u0446\u0438\u0439 &#8212; <code>force_generic_plan<\/code> \u0438 <code>force_custom_plan<\/code> \u0434\u043b\u044f \u0431\u0435\u0437\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00a0 generic \u0438 custom \u0442\u0438\u043f\u0430 \u043f\u043b\u0430\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0427\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u043c\u043d\u0435 \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u0432 \u0445\u043e\u0434\u0435 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0439 \u0431\u044b\u043b\u0438 \u043e\u0437\u0432\u0443\u0447\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u044f\u0434\u0440\u0430\u00a0 Postgres:<\/p>\n<ul>\n<li>\n<p>Tom Lane \u0443\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0438 (<a href=\"https:\/\/www.postgresql.org\/message-id\/raw\/1010.1491427354@sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>), \u0430 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0442\u043a\u0443\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 GUC &#8212; \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0436\u043d\u0435\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 (Greg Stark, Pavel Stehule <a href=\"https:\/\/www.postgresql.org\/message-id\/407d949e1002160628v14966092iea1bf26e34039344%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0438\u043f\u0430\u043c\u0438 \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043c\u0435\u0435\u0442 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (Tom Lane <a href=\"https:\/\/www.postgresql.org\/message-id\/28723.1267155635%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0442\u0430\u043a, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0438\u0447\u0438, \u043c\u043d\u0435\u043d\u0438\u044f, \u0432\u044b\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u043f\u044b\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f generic \u043f\u043b\u0430\u043d\u043e\u0432 \u044f \u043f\u0440\u0438\u0445\u043e\u0436\u0443 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>generic \u043f\u043b\u0430\u043d \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043d\u0430\u0431\u043e\u0440\u0430\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u042d\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043d\u0430 custom\u00a0 \u0442\u0438\u043f \u043f\u043b\u0430\u043d\u0430. \u041e\u0434\u043d\u0430\u043a\u043e Postgres \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d \u043d\u0435 \u0432\u0435\u0434\u0451\u0442 \u0432 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u044f\u0434\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043e \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 &#8212; \u0434\u043e\u043b\u0436\u043d\u0430 \u043b\u0438 \u0432 \u044f\u0434\u0440\u0435 Postgres \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043e\u0442 executor\u2019a \u043a optimiser\u2019\u0443?<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u043f\u043b\u0430\u043d\u0430 (\u0432\u044b\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 generic \u043f\u043b\u0430\u043d\u0430 \u0438 \u043f\u0435\u0440\u0435\u0440\u0430\u0441\u0447\u0451\u0442 \u0435\u0433\u043e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 &#8212; custom \u043f\u043b\u0430\u043d\u0430. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c custom \u043f\u043b\u0430\u043d\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0435\u0433\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0435 \u0432 plancache \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446. \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f generic \u043f\u043b\u0430\u043d \u0445\u043e\u0442\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u00a0 custom\u00a0 \u043f\u043b\u0430\u043d\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u043f\u043b\u0430\u043d\u043d\u0435\u0440\u043e\u043c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0430\u0434\u0435\u043a\u0432\u0430\u0442\u043d\u044b\u0435 \u043a\u043e\u0441\u0442\u044b \u043f\u043b\u0430\u043d\u043e\u0432. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043a\u043e\u0433\u0434\u0430 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435 \u044d\u0441\u0442\u0438\u043c\u0430\u0446\u0438\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043e\u0441\u0442\u044b \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0435\u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u044b\u0431\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 custom \u0438 generic \u043f\u043b\u0430\u043d\u0430\u043c\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u0435\u043b\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0447\u0442\u043e \u0436\u0435 \u0434\u0435\u043b\u0430\u0442\u044c? \u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f &#8212; \u044f\u0434\u0435\u0440\u043d\u043e\u0435, \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u044c\u044e\u043d\u0438\u0442\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0430\u0442\u0447 \u0432 \u044f\u0434\u0440\u043e \u0434\u043b\u044f \u0444\u043e\u0440\u043a\u043e\u0432 \u043f\u043e\u0441\u0442\u0433\u0440\u0435\u0441\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0443 \u0432\u044b\u0431\u043e\u0440\u0430 \u0442\u0438\u043f\u0430 \u043f\u043b\u0430\u043d\u0430 \u0441 \u043d\u0443\u043b\u044f. \u042d\u0442\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a-\u0431\u044b \u0431\u0430\u0437\u0438\u0441\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043f\u043b\u0430\u043d\u043e\u0432 \u0438 \u0435\u0451 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0440\u043e\u0434\u043d\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0443 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 &#8212; \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u0441\u0442\u044b \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043f\u043e\u0440\u043d\u043e &#8212; \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f generic \u043f\u043b\u0430\u043d\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442. \u041d\u0435 \u0438\u043c\u0435\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432 \u044d\u0442\u043e \u0434\u0430\u0441\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043d\u0430 \u043f\u043b\u0430\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0440\u0438 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, SQL Server.<\/p>\n<p>\u0412\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u043d\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b\u0439\u0442\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041f\u0435\u0440\u0432\u043e\u0435 &#8212; \u043c\u043e\u0436\u043d\u043e \u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043f\u043b\u0430\u043d\u043e\u0432, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043a\u043e\u0441\u0442\u043e\u0432 \u0438 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043b\u0430\u043d\u0430. \u0415\u0449\u0451 \u043b\u0443\u0447\u0448\u0435 &#8212; \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u044b\u0445 \u0432 \u0445\u043e\u0434\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/danolivo\/pg_mentor\/tree\/auto-mode-only\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0435\u043a\u0442<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0431\u0440\u043e\u0441\u043a\u043e\u043c \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430\u043c\u0438 \u043f\u043b\u0430\u043d\u043e\u0432 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 <a href=\"https:\/\/github.com\/danolivo\/pg_mentor\/tree\/main\" rel=\"noopener noreferrer nofollow\">\u0434\u0440\u0443\u0433\u0430\u044f \u0432\u0435\u0442\u043a\u0430<\/a> \u0442\u0430\u043c \u0436\u0435 &#8212; \u043d\u0430\u0431\u0440\u043e\u0441\u043e\u043a \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0436\u0438\u043c\u0430\u043c\u0438.<\/p>\n<p>\u0410 \u0432\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 generic \u043f\u043b\u0430\u043d\u043e\u0432? \u0415\u0441\u0442\u044c \u043b\u0438 \u0441\u043c\u044b\u0441\u043b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0446\u0435\u043b\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u043e\u0432 \u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e prepared statement \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 SQL \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>pg_stat_statements<\/code>?<\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p><strong>Hackers&#8217; mailing lists threads:<\/strong><\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/4B715056.8060103%40xs4all.nl\" rel=\"noopener noreferrer nofollow\">Avoiding bad prepared-statement plans.<\/a> , 2010-02<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/22791.1289514094%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">Restructuring plancache.c API<\/a> , 2010-11<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/BANLkTikAN%3Dg1oCC%2BtY72o7FFH0OjF%2BYy%3DA%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">One-Shot Plans<\/a> , 2011-06<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/29216.1312318038%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">Transient plans versus the SPI API<\/a> , 2011-08<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CA%2BTgmoYqKRj9BozjB-%2BtLQgVkSvzPFWBEzRF4PM2xjPOsmFRdw%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">why do we need two snapshots per query?<\/a> , 2011-11<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CAFj8pRCKfoz6L82PovLXNK-1JL%3DjzjwaT8e2BD2PwNKm7i7KVg%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">dynamic SQL &#8212; possible performance regression in 9.2<\/a> , 2012-12<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CAFj8pRAGLaiEm8ur5DWEBo7qHRWTk9HxkuUAz00CZZtJj-LkCA%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">PoC plpgsql &#8212; possibility to force custom or generic plan<\/a> , 2017-01<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CADJ%3Dz8vD-HsM_qrNRLn9Lne-EkZtg%3DxmHjJ3RqksOoakzcuOyg%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">The logic behind comparing generic vs. custom plan costs<\/a> , 2025-03<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CAK-MWwS_2UwF7XPy-8XpcVqUjEveDjDQRbXxPyzvJM%2BooWeh9A%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">inefficient\/wrong plan cache mode selection for queries with  partitioned tables (postgresql 17)<\/a> ,2025-05<\/p>\n<\/li>\n<\/ol>\n<p><strong>Main commits:<\/strong><\/p>\n<ul>\n<li>\n<p><code>b9527e9<\/code> &#8212; \u0432\u0438\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u0445\u043e\u0434 \u043d\u0430 \u0444\u0438\u0447\u0443, 2007-03<\/p>\n<\/li>\n<li>\n<p><code>e6faf91<\/code> \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043f\u043b\u0430\u043d\u044b, 2011-09<\/p>\n<\/li>\n<li>\n<p><code>94afbd5<\/code> &#8212; \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 one-shot entries, 2013-01<\/p>\n<\/li>\n<li>\n<p><code>2aac339<\/code> &#8212; \u0443\u0442\u043e\u0447\u043d\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, 2013-09<\/p>\n<\/li>\n<li>\n<p><code>f7cb284<\/code>\u00a0&#8212; \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 plan_cache_mode setting, 2018-07<\/p>\n<\/li>\n<\/ul>\n<p>THE END.<br \/><em>\u0418\u0441\u043f\u0430\u043d\u0438\u044f, \u041c\u0430\u0434\u0440\u0438\u0434, 29 \u0438\u044e\u043d\u044f 2025 \u0433\u043e\u0434\u0430.<\/em><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/923352\/\"> https:\/\/habr.com\/ru\/articles\/923352\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u041f\u043e\u0431\u044b\u0432\u0430\u0432 \u043d\u0430 <\/em><a href=\"http:\/\/PGConf.DE\" rel=\"noopener noreferrer nofollow\"><em>PGConf.DE<\/em><\/a><em>\u20192025 \u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044f \u0442\u0430\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f Postgres \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u044f \u043a \u0441\u0432\u043e\u0435\u043c\u0443 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0441\u043b\u044b\u0448\u0430\u043b \u043c\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0430\u043a\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0448\u0430\u0433, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430 \u0441\u043e\u0442\u043d\u044e \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432. \u0427\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f.<\/em><\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434 \u0432 \u0442\u0430\u043a\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 &#8212; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c PREPARED statements, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0438\u0445 \u0432 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u043a <em>parse tree<\/em> \u0438 <em>query plan.<\/em> \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u0438\u043a\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 (\u0441\u043c. <a href=\"https:\/\/github.com\/danolivo\/conf\/blob\/main\/Scripts\/partitioned-tbl-example.sql\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0440\u0438\u043f\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/a>):<\/p>\n<pre><code class=\"sql\">EXPLAIN (ANALYZE, COSTS OFF, MEMORY, TIMING OFF) SELECT * FROM test WHERE y = 127;  \/* ...    -&gt;  Seq Scan on l256 test_256          Filter: (y = 127)  Planning:    Buffers: shared hit=1536    Memory: used=3787kB  allocated=4104kB  Planning Time: 61.272 ms  Execution Time: 4.929 ms *\/<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0435\u0439 256 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u0439 \u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443 \u043c\u0435\u043d\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 60 \u043c\u0441, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 &#8212; 5 \u043c\u0441. \u0422\u0430\u043a\u0436\u0435, \u0432 \u0445\u043e\u0434\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043e 4 \u041c\u0411 RAM \u0438 \u043f\u043e\u0442\u0440\u043e\u0433\u0430\u043d\u043e 1500 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0411\u0414. \u041c\u043d\u0435 \u0431\u044b \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u043f\u0440\u043e\u0434\u0435!<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 <em>custom \u043f\u043b\u0430\u043d<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438 \u043f\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0443\u0435\u043c \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u0432 <em>&#171;\u041a\u044d\u0448 \u043f\u043b\u0430\u043d\u043e\u0432&#187;<\/em> \u0431\u044d\u043a\u0435\u043d\u0434\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 PREPARE:<\/p>\n<pre><code class=\"sql\">PREPARE tst (integer) AS SELECT * FROM test WHERE y = $1; EXPLAIN (ANALYZE, COSTS OFF, MEMORY, TIMING OFF) EXECUTE tst(127);  \/* ...    -&gt;  Seq Scan on l256 test_256          Filter: (y = $1)  Planning:    Buffers: shared hit=1536    Memory: used=3772kB  allocated=4120kB  Planning Time: 59.525 ms  Execution Time: 5.184 ms *\/<\/code><\/pre>\n<p>\u0422\u0440\u0443\u0434\u043e\u0451\u043c\u043a\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0442\u043e\u043c \u0436\u0435 \u0443\u0440\u043e\u0432\u043d\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f custom \u043f\u043b\u0430\u043d. \u0417\u0430\u0441\u0442\u0430\u0432\u0438\u043c \u0431\u044d\u043a\u0435\u043d\u0434 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u044b\u0439 \u201cgeneric\u201d \u043f\u043b\u0430\u043d:<\/p>\n<pre><code class=\"sql\">SET plan_cache_mode = 'force_generic_plan'; EXPLAIN (ANALYZE, COSTS OFF, MEMORY, TIMING OFF) EXECUTE tst(127);  \/* ...   -&gt;  Seq Scan on l256 test_256          Filter: (y = $1)  Planning:    Memory: used=4kB  allocated=24kB  Planning Time: 0.272 ms  Execution Time: 2.810 ms *\/<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0442.\u043d. generic \u043f\u043b\u0430\u043d, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u0442\u0435\u0445 \u0436\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043d\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0438 custom \u043f\u043b\u0430\u043d. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u043b\u0430\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043a\u044d\u0448\u0430. \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 0.2 \u043c\u0441, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 &#8212; 24 \u043a\u0431, \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u0411\u0414 \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u043e\u043e\u0431\u0449\u0435. \u042f\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u0442!<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 PREPARE \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u0442\u043e\u0440\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u043a\u0435\u043f\u0441\u0438\u0441, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 (\u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c) \u0432 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 generic \u043f\u043b\u0430\u043d\u0430\u043c\u0438, \u0438\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 (\u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c) \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 custom \u043f\u043b\u0430\u043d\u044b (<a href=\"https:\/\/www.linkedin.com\/feed\/update\/urn:li:activity:7333171071015100416?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7333171071015100416%2C7333270833563320321%29&amp;replyUrn=urn%3Ali%3Acomment%3A%28activity%3A7333171071015100416%2C7333392449064550400%29&amp;dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287333270833563320321%2Curn%3Ali%3Aactivity%3A7333171071015100416%29&amp;dashReplyUrn=urn%3Ali%3Afsd_comment%3A%287333392449064550400%2Curn%3Ali%3Aactivity%3A7333171071015100416%29\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0427\u0442\u043e\u0431\u044b \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c generic \u043f\u043b\u0430\u043d\u043e\u0432 \u0438 \u0432 \u0447\u0435\u043c \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u044f \u0440\u0435\u0448\u0438\u043b \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 &#8212; \u043e\u0431\u0437\u043e\u0440 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0442\u0435\u043c\u0443.<\/p>\n<p>\u041a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f plancache, \u0438\u043b\u0438 &#171;<em>\u041a\u044d\u0448 \u043f\u043b\u0430\u043d\u043e\u0432<\/em>&#187; \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 2007 \u0433\u043e\u0434\u0443 \u0441 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c b9527e9. \u0412 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 PREPARED-\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 Postgres \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e generic \u043f\u043b\u0430\u043d\u043e\u043c \u0438 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u043d\u0430 \u0432\u043e\u0432\u0441\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Oracle, SQL Server \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043e\u0431\u0440\u0430\u0442\u044c\u0435\u0432 \u043f\u043e \u0446\u0435\u0445\u0443, \u0432 Postgres \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 generic \u043f\u043b\u0430\u043d \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u201c\u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0441\u043d\u043e\u0433\u043e\u201d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 (\u0441\u043c., \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"http:\/\/web.archive.org\/web\/20080929185556\/http:\/\/www.db2ude.com\/?q=node%2F73\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/oracle-base.com\/articles\/11g\/adaptive-cursor-sharing-11gr1\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/www.mssqltips.com\/sqlservertip\/7491\/prepare-sql-statement-spprepare-spexecute\/\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/learn.microsoft.com\/en-us\/answers\/questions\/262485\/sql-server-how-to-determine-parameter-sniffing-pro\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0422\u043e \u0435\u0441\u0442\u044c, \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 &#171;127&#187;  \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u0430 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f generic-\u043f\u043b\u0430\u043d\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0438\u043c\u0435\u044f \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440 \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0438, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, generic \u043f\u043b\u0430\u043d \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0445\u0443\u0436\u0435 \u0441\u0432\u043e\u0435\u0433\u043e custom \u0441\u043e\u0431\u0440\u0430\u0442\u0430. \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 (\u0441\u043c. <a href=\"https:\/\/github.com\/danolivo\/conf\/blob\/main\/Scripts\/time-range-example.sql\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442<\/a>):<\/p>\n<pre><code class=\"sql\">EXPLAIN SELECT * FROM test_2 WHERE   start_date &gt; '2025-06-30'::timestamp - '7 days'::interval; \/*  Index Scan using test_2_start_date_idx on test_2  (rows=739 width=34)    Index Cond: (start_date &gt; '2025-06-23 00:00:00'::timestamp) *\/  PREPARE tst3(timestamp) AS SELECT * FROM test_2   WHERE start_date &gt; $1 - '7 days'::interval;  EXPLAIN EXECUTE tst3('2025-06-30'::timestamp); \/*  Seq Scan on test_2  (rows=333333 width=34)    Filter: (start_date &gt; ($1 - '7 days'::interval)) *\/<\/code><\/pre>\n<p>\u041d\u0430\u0432\u0441\u043a\u0438\u0434\u043a\u0443, \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b: \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u043d\u0435\u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u044d\u0441\u0442\u0438\u043c\u0430\u0446\u0438\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430 \u0432 33%; \u0434\u043b\u044f\u00a0 range-\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 0.5% \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435, \u0430 \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MCV-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 ndistinct. \u0422\u0430\u043a\u0436\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0440\u044f\u0434\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u044b.<\/p>\n<p>\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u043e \u043a \u0437\u0430\u043c\u0435\u0442\u043d\u043e\u0439 \u0434\u0435\u0433\u0440\u0430\u0434\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u0434\u043a\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 PREPARE\/EXECUTE statement \u0438 \u0432 2011 \u0433\u043e\u0434\u0443 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b\u0430 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0432\u0435\u043b\u0430 \u043a \u043a\u043e\u043c\u043c\u0438\u0442\u0443 e6faf91, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0432\u0448\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0436\u0434\u0443 custom \u0438 generic \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u043f\u043b\u0430\u043d\u0430 \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0435.<\/p>\n<p>\u0414\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f \u044d\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0441 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0430\u0437\u0440\u0435\u0432\u0448\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c, \u0447\u0442\u043e PREPARED statements \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e generic-\u043f\u043b\u0430\u043d\u0430\u043c\u0438 (Mark Mielke, <a href=\"https:\/\/www.postgresql.org\/message-id\/4B7176DD.5060305%40mark.mielke.cc\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0422\u0430\u043a\u043e\u0439 \u043f\u043b\u0430\u043d \u0445\u043e\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u0438\u043d\u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 &#8212; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b ANALYZE \u0438\u043b\u0438 ALTER TABLE, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u043c\u0435\u043b \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0445\u0443\u0434\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0414\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u0434\u0435\u0438:<\/p>\n<ul>\n<li>\n<p>\u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c generic-\u043f\u043b\u0430\u043d (Jeroen Vermeulen, <a href=\"https:\/\/www.postgresql.org\/message-id\/4B715056.8060103%40xs4all.nl\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0412\u0432\u0435\u0441\u0442\u0438 threshold \u043f\u043e \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u201c\u0432\u0440\u0435\u043c\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\/ \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f\u201c &#8212; \u0415\u0441\u043b\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0430 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435 100, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e generic \u043f\u043b\u0430\u043d, \u0435\u0441\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0435 0.01 &#8212; \u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e custom-\u043f\u043b\u0430\u043d. (Bart Samwel <a href=\"https:\/\/www.postgresql.org\/message-id\/ded01eb21002110409m5b729dffn168061dae0cad213%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>. Yeb Havinga \u043e\u043f\u043f\u043e\u043d\u0438\u0440\u0443\u0435\u0442 (<a href=\"https:\/\/www.postgresql.org\/message-id\/4B7408EE.5020905%40gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>) \u044d\u0442\u043e\u0439 \u0438\u0434\u0435\u0435 &#8212; \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u201c\u0432\u0440\u0435\u043c\u044f\u201c). \u041e\u0434\u043d\u0430\u043a\u043e, \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u0430 Jeroen Vermeulen \u0438 Greg Stark (<a href=\"https:\/\/www.postgresql.org\/message-id\/407d949e1002160622l65719aabpf68165681ee8b6be%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>) c \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u043e\u0439, \u0447\u0442\u043e \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u0438 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 stddev \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0447\u0442\u043e \u0434\u0430\u0441\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0434\u043e\u043b\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f\/\u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437 (Greg Stark, <a href=\"https:\/\/www.postgresql.org\/message-id\/407d949e1002160622l65719aabpf68165681ee8b6be%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0445 \u0438\u00a0 generic \u043f\u043b\u0430\u043d, \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0431\u043e\u0440 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u0441\u0442\u043e\u0432 (Tom Lane, <a href=\"https:\/\/www.postgresql.org\/message-id\/10153.1265905060%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 generic \u043f\u043b\u0430\u043d\u043e\u0432 \u0432\u043e\u0432\u0441\u0435, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0443\u0434\u0435\u0448\u0435\u0432\u0438\u0432 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0443\u0442\u0451\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u201c\u043a\u044d\u0448\u0430\u201d \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PlannerInfo \u0438 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 jointree \/ \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0433\u0434\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f (Yeb Havinga, <a href=\"https:\/\/www.postgresql.org\/message-id\/4B715C23.30101%40gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c generic\u00a0 \u043f\u043b\u0430\u043d\u044b, \u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0439 \u043f\u0435\u0440\u0435\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0432 MCV \u0438\u043b\u0438 \u043d\u0435\u0442 (Robert Haas (<a href=\"https:\/\/www.postgresql.org\/message-id\/603c8f071002252001n6b2467bal2e6bae26a9a2b79a%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>,<a href=\"https:\/\/www.postgresql.org\/message-id\/CA%2BTgmobgD_UZRs44cOutY1odNbR0C_HJSxvx_dMREvz-CwuiaQ%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\"> link<\/a>), \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d\u043e Jeff Davis).<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f <em>re-optimisation<\/em> (Richard Huxton, <a href=\"https:\/\/www.postgresql.org\/message-id\/4B716828.2030303%40archonet.com\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0430\u0441\u044c \u0441\u043a\u043e\u0440\u0435\u0435 \u0432 \u0444\u043e\u0440\u043c\u0435 \u043c\u0435\u0447\u0442\u044b, \u043d\u043e \u0443\u0436\u0435 \u043a 2020 \u0433\u043e\u0434\u0443 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0437\u0440\u0435\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u0432 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0441\u0440\u043e\u043a\u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0438\u0434\u0435\u044e (\u0441\u043c. <a href=\"https:\/\/postgrespro.com\/docs\/enterprise\/16\/realtime-query-replanning\" rel=\"noopener noreferrer nofollow\">replan<\/a>). \u0417\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u0436\u0435 \u0432 \u044f\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f\u00a0 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0447\u0435\u0440\u0435\u0437 simple-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0441\u0442\u044d\u0439\u0442\u043c\u0435\u043d\u0442\u043e\u0432, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430\u043c\u0438 \u0432 <a href=\"https:\/\/postgrespro.com\/docs\/enterprise\/15\/sr-plan\" rel=\"noopener noreferrer nofollow\">sr_plan<\/a> (Robert Haas, <a href=\"https:\/\/www.postgresql.org\/message-id\/CA%2BTgmoZCOaKs1pGOmR8wtpHOw6uKiScswKzm%2B9fNx8w4visoQQ%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a> \u0438 \u0438\u0434\u0435\u044f Yeb Havinga \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0442\u043e\u0433\u0434\u0430 \u0435\u0449\u0451 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0432\u0448\u0435\u0433\u043e queryId <a href=\"https:\/\/www.postgresql.org\/message-id\/4E3A6278.3050404%40gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 2011 \u0433\u043e\u0434\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0438\u0434\u0435\u044f one-shot plan (Simon Riggs, <a href=\"https:\/\/www.postgresql.org\/message-id\/BANLkTikAN%3Dg1oCC%2BtY72o7FFH0OjF%2BYy%3DA%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u043c\u044b\u0441\u043b \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043f\u043b\u0430\u043d\u043e\u0432 &#8212; \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0421\u0423\u0411\u0414, \u0447\u0442\u043e \u043f\u043b\u0430\u043d \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d, \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d \u043f\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0435\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043d\u0435\u0442 \u0441\u0432\u044f\u0437\u043a\u0438 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438\u0434\u0435\u0438 Simon \u043f\u0440\u0438\u0432\u0451\u043b \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 &#8212; \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c partition pruning. \u0412 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443, Bruce Momjan \u043e\u0437\u0432\u0443\u0447\u0438\u043b \u0438\u0434\u0435\u044e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0432 one-shot plan &#8212; \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0431\u0443\u0444\u0435\u0440\u043d\u044b\u0439 \u043a\u044d\u0448 \u0447\u0442\u043e\u0431\u044b \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430.<\/p>\n<p>\u0412 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0444\u0438\u0447\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b Tom Lane (<a href=\"https:\/\/www.postgresql.org\/message-id\/7898.1312214100%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u0418 \u0437\u0430\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b \u043e\u043d \u0435\u0451 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0436\u0430\u043b\u043e\u0431 \u043d\u0430 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e \u0432<a href=\"https:\/\/www.postgresql.org\/docs\/current\/ecpg-dynamic.html\" rel=\"noopener noreferrer nofollow\"> dynamic SQL<\/a> \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 (<a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/03E840D17E263A48A5766AD576E0423A03DF0A266B%40exch-mbx-111.vmware.com\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CAD4%2B%3DqWnGU0qi%2Biq%3DEPh6EGPuUnSCYsGDTgKazizEvrGgjo0Sg%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0433\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u0430\u0441\u044c \u043e\u0442 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u0434\u0435\u0438 Simon Riggs \u0438 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b SPI, PREPARE \u0438 extended protocol \u0447\u0435\u0440\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 plancache. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f, \u0445\u043e\u0442\u044f \u0438 \u0434\u0438\u0441\u043a\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u0437\u0434\u043d\u0435\u0435 (<a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CA%2BTgmoYqKRj9BozjB-%2BtLQgVkSvzPFWBEzRF4PM2xjPOsmFRdw%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>, <a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CABRT9RC-1wGxZC_Z5mwkdk70fgY2DRX3sLXzdP4voBKuKPZDow%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<p>\u0418\u0434\u0435\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435 \u043f\u0440\u0438\u0436\u0438\u043b\u0430\u0441\u044c \u0438\u0437-\u0437\u0430 \u0432\u043e\u0437\u0440\u0430\u0436\u0435\u043d\u0438\u044f Tom Lane (<a href=\"https:\/\/www.postgresql.org\/message-id\/raw\/25760.1357800208%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0441\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u0430 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0441\u0435\u0431\u044f \u0432\u0435\u0441\u0442\u0438 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.<\/p>\n<p>\u0412 2017 \u0433\u043e\u0434\u0443 Pavel Stehule \u043f\u043e\u0434\u043d\u044f\u043b \u0442\u0435\u043c\u0443 \u044f\u0432\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u043c \u043f\u043b\u0430\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a plancache (<a href=\"https:\/\/www.postgresql.org\/message-id\/flat\/CAFj8pRAGLaiEm8ur5DWEBo7qHRWTk9HxkuUAz00CZZtJj-LkCA%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>). \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a\u00a0 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>plan_cache_mode<\/code> \u0438 \u0434\u0432\u0443\u0445 \u043e\u043f\u0446\u0438\u0439 &#8212; <code>force_generic_plan<\/code> \u0438 <code>force_custom_plan<\/code> \u0434\u043b\u044f \u0431\u0435\u0437\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00a0 generic \u0438 custom \u0442\u0438\u043f\u0430 \u043f\u043b\u0430\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0427\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u043c\u043d\u0435 \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u0432 \u0445\u043e\u0434\u0435 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0439 \u0431\u044b\u043b\u0438 \u043e\u0437\u0432\u0443\u0447\u0435\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \u044f\u0434\u0440\u0430\u00a0 Postgres:<\/p>\n<ul>\n<li>\n<p>Tom Lane \u0443\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0432 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0438 (<a href=\"https:\/\/www.postgresql.org\/message-id\/raw\/1010.1491427354@sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>), \u0430 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u043e\u0442\u043a\u0443\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 GUC &#8212; \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0436\u043d\u0435\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 (Greg Stark, Pavel Stehule <a href=\"https:\/\/www.postgresql.org\/message-id\/407d949e1002160628v14966092iea1bf26e34039344%40mail.gmail.com\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0442\u0438\u043f\u0430\u043c\u0438 \u043f\u043b\u0430\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043c\u0435\u0435\u0442 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (Tom Lane <a href=\"https:\/\/www.postgresql.org\/message-id\/28723.1267155635%40sss.pgh.pa.us\" rel=\"noopener noreferrer nofollow\">link<\/a>).<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0442\u0430\u043a, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0438\u0447\u0438, \u043c\u043d\u0435\u043d\u0438\u044f, \u0432\u044b\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u043f\u044b\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f generic \u043f\u043b\u0430\u043d\u043e\u0432 \u044f \u043f\u0440\u0438\u0445\u043e\u0436\u0443 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>generic \u043f\u043b\u0430\u043d<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-465213","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/465213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=465213"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/465213\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=465213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=465213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=465213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}