<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>SQL-Ex blog - Optimization</title>
    <link>https://sql-ex.ru/blogs/</link>
    <description>Новости сайта &quot;Упражнения SQL&quot;, статьи и переводы</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 2.3.5 - http://www.s9y.org/</generator>
    <pubDate>Sun, 07 Jun 2026 05:37:00 GMT</pubDate>

    <image>
    <url>https://sql-ex.ru/images/logo.jpg</url>
    <title>RSS: SQL-Ex blog - Optimization - Новости сайта &quot;Упражнения SQL&quot;, статьи и переводы</title>
    <link>https://sql-ex.ru/blogs/</link>
    <width></width>
    <height></height>
</image>

<item>
    <title>Обзор индексов в MySQL: B-Tree индексы FULLTEXT</title>
    <link>https://sql-ex.ru/blogs/?/MySQL-B-Tree-FULLTEXT.html</link>
            <category>MySQL</category>
            <category>Optimization</category>
    
    <comments>https://sql-ex.ru/blogs/?/MySQL-B-Tree-FULLTEXT.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3412</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3412</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.red-gate.com/simple-talk/databases/mysql/mysql-index-overviews-fulltext-b-tree-indexes/&quot;&gt;Lukas Vileikis. MySQL Index Overviews FULLTEXT B-Tree Indexes&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;h2&gt;Что такое полнотекстовое индексирование?&lt;/h2&gt;&lt;br /&gt;
Полнотекстовые индексы - это особый тип индекса, который позволяет быстро и эффективно выполнять поиск по данным, используя довольно экзотические режимы поиска. В MySQL эти режимы включают, но не ограничиваются ими, логический режим, режим естественного языка и режим поиска с использованием расширения запроса. Некоторые из режимов поиска, ставшие возможными благодаря использованию полнотекстовых индексов, предоставляют уникальную поддержку для различной интерпретации определенных символов, поиска подразумеваемых данных и других специфических нюансов.&lt;br /&gt;
&lt;br /&gt;
Полнотекстовое индексирование работает аналогичным образом во многих системах управления базами данных и существенно не менялось годами - загляните в &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.red-gate.com/simple-talk/databases/sql-server/learn/understanding-full-text-indexing-in-sql-server/&quot;&gt;блог Роберта Шелдона, посвященного полнотекстовому поиску более двух десятилетий назад&lt;/a&gt;, и вы конечно найдете что-нибудь, что изменилось в вашей установке SQL Server, но вы также обнаружите множество вещей, которые остались неизменными; и то же самое можно сказать о других системах управления базами данных.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/MySQL-B-Tree-FULLTEXT.html#extended&quot;&gt;Continue reading &quot;Обзор индексов в MySQL: B-Tree индексы FULLTEXT&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 07 Jun 2026 08:37:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3412.html</guid>
    
</item>
<item>
    <title>Оптимизация поиска при использовании SQL LIKE с подстановочными знаками</title>
    <link>https://sql-ex.ru/blogs/?/SQL-LIKE.html</link>
            <category>Optimization</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL-LIKE.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3399</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3399</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.mssqltips.com/sqlservertip/8100/optimize-sql-like-wildcard-searches/&quot;&gt;Simon Liew. Optimize SQL LIKE Wildcard Searches&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Полный поиск по шаблону (например, LIKE &#039;%поисковая_фраза%&#039;) в Microsoft SQL Server может быть медленным и неэффективным, поскольку гарантируется сканирование всех строк в таблице. Имеются ли какие-нибудь варианты оптимизации запросов с оператором SQL LIKE?&lt;br /&gt;
&lt;br /&gt;
Оптимизация независимого от регистра полного поиска по шаблону с начальным и конечным подстановочным знаком является проблемой в базах данных SQL - эти шаблоны LIKE не получают выгоды от индексирования. Здесь исследуются  потенциальные варианты оптимизации такого поиска и проверяются распространенные заблуждения.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SQL-LIKE.html#extended&quot;&gt;Continue reading &quot;Оптимизация поиска при использовании SQL LIKE с подстановочными знаками&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sat, 30 May 2026 23:09:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3399.html</guid>
    
</item>
<item>
    <title>Слишком много индексов — это сколько?</title>
    <link>https://sql-ex.ru/blogs/?/unknown.html</link>
            <category>Optimization</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/unknown.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3381</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3381</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.brentozar.com/archive/2024/10/how-many-indexes-is-too-many/&quot;&gt;Brent Ozar. How Many Indexes Is Too Many?&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Давайте начнем с &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://www.brentozar.com/archive/2015/10/how-to-download-the-stack-overflow-database-via-bittorrent/&quot;&gt;базы данных Stack Overflow&lt;/a&gt; (будет работать версия любого размера), удалим все индексы на таблице Users и выполним DELETE:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;SET STATISTICS IO ON;&lt;br /&gt;
GO&lt;br /&gt;
BEGIN TRAN&lt;br /&gt;
DELETE dbo.Users WHERE DisplayName = N&#039;Brent Ozar&#039;;&lt;/pre&gt;&lt;br /&gt;
Я использую SET STATISTICS IO ON, о чем мы говорили в статье &lt;a class=&quot;let&quot; target=&quot;_blank&quot; href=&quot;https://sql-ex.ru/blogs/?/Kak_dumat_podobno_serveru_SQL_Server.html&quot;&gt;&quot;Как думать подобно серверу SQL Server&quot;&lt;/a&gt; для иллюстрации количества прочитанных данных, и я делаю это в транзакции, которую я могу периодически откатывать, каждый раз демонстрируя полученные эффекты. Вот действительный план выполнения:&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/05/many_indexes_1.jpg&quot; /&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/unknown.html#extended&quot;&gt;Continue reading &quot;Слишком много индексов — это сколько?&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 17 May 2026 08:22:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3381.html</guid>
    
</item>
<item>
    <title>Настройка производительности в PostgreSQL 17: как обновления и VACUUM влияют на хранилище</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17-VACUUM.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17-VACUUM.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3372</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3372</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@jramcloud1/09-postgresql-17-performance-tuning-how-updates-and-vacuum-affect-storage-05c656a5aadf&quot;&gt;Jeyaram Ayyalusamy. 09 - PostgreSQL 17 Performance Tuning: How Updates and VACUUM Affect Storage&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Модель хранения в PostgreSQL отличается от многих других баз данных. Вместо переписывания строки по месту, PostgreSQL создает новые версии строк при обновлении данных. Эта схема хороша для безопасности транзакций и параллелизма, но при этом влияет на размер таблицы и VACUUM приобретает важное значение для производительности.&lt;br /&gt;
&lt;br /&gt;
Давайте пошагово пройдем тестовый пример, чтобы увидеть, как это работает на практике.&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/05/9_PG_17.webp&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Отключение autovacuum (только для тестирования)&lt;/h2&gt;&lt;br /&gt;
PostgreSQL обычно выполняет фоновый процесс, который называется autovacuum, для очистки мертвых кортежей и предотвращения раздувания таблиц.&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Для реальных приложений выключение autovacuum не рекомендуется, поскольку это критически важно для работоспособности базы данных.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Но в целях тестирования он может быть выключен для конкретной таблицы для гарантии, что ничего не будет происходить автоматически в фоновом режиме.&lt;/li&gt;&lt;/ul&gt; &lt;br /&gt;
Это позволяет нам в точности наблюдать, как PostgreSQL управляет хранилищем. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17-VACUUM.html#extended&quot;&gt;Continue reading &quot;Настройка производительности в PostgreSQL 17: как обновления и VACUUM влияют на хранилище&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 10 May 2026 10:27:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3372.html</guid>
    
</item>
<item>
    <title>Понимание запросов списка процессов MySQL: руководство по мониторингу и оптимизации производительности</title>
    <link>https://sql-ex.ru/blogs/?/MySQL.html</link>
            <category>MySQL</category>
            <category>Optimization</category>
    
    <comments>https://sql-ex.ru/blogs/?/MySQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3370</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3370</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@dmitry.romanoff/understanding-mysql-process-list-queries-a-guide-to-monitoring-and-optimizing-performance-4c4a1ca0e8c9&quot;&gt;Dmitry Romanoff. Understanding MySQL Process List Queries: A Guide to Monitoring and Optimizing Performance&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Таблица MySQL information_schema.processlist предоставляет большой объем информации о текущем состоянии сервера MySQL. Она важна для администраторов и разработчиков баз данных, чтобы мониторить эти данные для обеспечения оптимальной производительности и диагностики потенциальных проблем. В этой статье мы познакомимся с несколькими запросами MySQL, предназначенными для извлечения полезных идей из списка процессов, и обсудим, насколько они могут помочь нам в мониторинге и оптимизации сервера MySQL.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;1. Просмотр всех процессов&lt;/h2&gt;&lt;br /&gt;
Чтобы получить исчерпывающий обзор всех текущих процессов на сервере MySQL, вы можете использовать следующий запрос:&lt;br /&gt;
&lt;br /&gt;
&lt;pre lang=&quot;sql&quot;&gt;SELECT * FROM information_schema.processlist;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/MySQL.html#extended&quot;&gt;Continue reading &quot;Понимание запросов списка процессов MySQL: руководство по мониторингу и оптимизации производительности&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 07 May 2026 09:46:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3370.html</guid>
    
</item>
<item>
    <title>Настройка производительности PostgreSQL 17: индекс BRIN (Block Range INdex)</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17-BRIN-Block-Range-INdex.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17-BRIN-Block-Range-INdex.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3361</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3361</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@jramcloud1/22-postgresql-17-performance-tuning-brin-block-range-index-e0a57a2f4645&quot;&gt;Jeyaram Ayyalusamy. 22 - PostgreSQL 17 Performance Tuning: BRIN (Block Range INdex)&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/04/brin_1.webp&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
При работе с очень большими таблицами в PostgreSQL традиционные индексы типа B-Tree или GiST могут чрезвычайно вырасти в размерах, что занимает значительное время на их обслуживание. Для временных рядов или последовательно упорядоченных данных PostgreSQL предлагает более разумный и облегченный вариант: BRIN (Block Range Index).&lt;br /&gt;
&lt;br /&gt;
Индексы BRIN группируют данные в диапазоны блоков вместо хранения отдельных записей строк, что делает их компактными, быстрыми в построении и эффективными для запросов на диапазон или упорядоченные данные.&lt;br /&gt;
&lt;br /&gt;
Давайте пошагово рассмотрим пример.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17-BRIN-Block-Range-INdex.html#extended&quot;&gt;Continue reading &quot;Настройка производительности PostgreSQL 17: индекс BRIN (Block Range INdex)&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 26 Apr 2026 08:43:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3361.html</guid>
    
</item>
<item>
    <title>Настройка производительности в PostgreSQL 17: Понимание параметров стоимости оптимизатора</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3339</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3339</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@jramcloud1/32-postgresql-17-performance-tuning-understanding-optimizer-cost-parameters-670e0de45b4a&quot;&gt;Jeyaram Ayyalusamy. 32 - PostgreSQL 17 Performance Tuning: Understanding Optimizer Cost Parameters&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
PostgreSQL известна как одна из наиболее продвинутых реляционных баз данных с открытыми кодами, и одна из основных причин ее силы - &lt;strong&gt;оптимизатор запросов на основе стоимости&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Когда вы запускаете запрос, оптимизатор не выполняет его непосредственно. Он генерирует множество возможных планов выполнения и оценивает их стоимость. Выбирается план с самой низкой оценкой стоимости. Стоимость не измеряется в миллисекундах или циклах ЦП - она представляет собой абстрактные единицы, которые PostgreSQL использует для сравнения.&lt;br /&gt;
&lt;br /&gt;
Понимание этих параметров стоимости в PostgreSQL является существенным для настройки производительности, особенно тогда, когда дело касается больших таблиц и сложных запросов.&lt;br /&gt;
&lt;br /&gt;
В этой статье мы:&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;Создадим таблицу с 10 миллионами строк для имитации реальной рабочей нагрузки.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Создадим индексы, чтобы дать возможность PostgreSQL построить несколько планов выполнения.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Подробно разберем модель стоимости в PostgreSQL.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Покажем, как настройка параметров стоимости может изменить решение при выборе плана.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17.html#extended&quot;&gt;Continue reading &quot;Настройка производительности в PostgreSQL 17: Понимание параметров стоимости оптимизатора&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 30 Mar 2026 10:12:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3339.html</guid>
    
</item>
<item>
    <title>Подготовленные запросы (операторы) в PostgreSQL для начинающих</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3331</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3331</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://tomasz-gintowt.medium.com/postgresql-prepared-queries-statements-for-beginners-cf0338133f81&quot;&gt;Tomasz Gintowt. PostgreSQL Prepared Queries (Statements) For Beginners&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Когда мы пишем запросы SQL, то часто выполняем один и тот же запрос снова и снова лишь меняя значения.&lt;br /&gt;
&lt;br /&gt;
PostgreSQL обладает функциональностью, которая помогает решить эту проблему, - подготовленные запросы (также называемые подготовленными операторами).&lt;br /&gt;
&lt;br /&gt;
В этой статье мы выясним:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Что такое подготовленные запросы.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Чем они полезны.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Как их использовать в PostgreSQL.&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Реальные примеры, которые вы сами сможете опробовать.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Никаких непонятных слов. Никакой сложной теории. Простые ясные примеры.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL.html#extended&quot;&gt;Continue reading &quot;Подготовленные запросы (операторы) в PostgreSQL для начинающих&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 22 Mar 2026 07:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3331.html</guid>
    
</item>
<item>
    <title>Настройка производительности в PostgreSQL 17: понимание преполагаемого и действительного планов выполнения</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-17.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-17.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3327</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3327</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://medium.com/@jramcloud1/29-postgresql-17-performance-tuning-understanding-estimates-vs-actuals-in-query-plans-91e7eccbc51a&quot;&gt;Jeyaram Ayyalusamy. 29 - PostgreSQL 17 Performance Tuning: Understanding Estimates vs. Actuals in Query Plans&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;img src=&quot;https://sql-ex.ru/blogs/wp-content/uploads/2026/03/ex_plans_1.webp&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Настройка производительности в PostgreSQL часто сводится к единственному навыку: умению читать планы выполнения. Команда PostgreSQL EXPLAIN ANALYZE - главный инструмент для этого. Она показывает не только то, как выполняется запрос, но и то, чего ожидал оптимизатор PostgreSQL, и что произошло на самом деле.&lt;br /&gt;
&lt;br /&gt;
При просмотре плана выполнения вы всегда должны задать себе два больших вопроса:&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;
&lt;li&gt;Оправданы ли временные параметры, указанные в выводе команды EXPLAIN ANALYZE, для данного запроса?&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;В каком месте происходит внезапный скачок времени выполнения?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
Места этих скачков в плане выполнения часто обнаруживают точный узел или операцию, которая замедляет ваш запрос.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-17.html#extended&quot;&gt;Continue reading &quot;Настройка производительности в PostgreSQL 17: понимание преполагаемого и действительного планов выполнения&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 16 Mar 2026 09:46:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3327.html</guid>
    
</item>
<item>
    <title>Разрешение спора между COUNT(*) и COUNT(1) в Postgres 19</title>
    <link>https://sql-ex.ru/blogs/?/COUNT-COUNT1-Postgres-19.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/COUNT-COUNT1-Postgres-19.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3315</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3315</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://www.thatguyfromdelhi.com/2025/11/settling-count-vs-count1-debate-in.html&quot;&gt;Robins Tharakan. Settling COUNT(*) vs COUNT(1) debate in Postgres 19&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Недавнее изменение в основной ветке PostgreSQL принесло лучшее качество жизни очень общего паттерна SQL в плане оптимизации - &lt;b&gt;улучшение производительности до 64%&lt;/b&gt; для SELECT COUNT(h), где h - столбец NOT NULL.&lt;br /&gt;
&lt;br /&gt;
Если вы когда-либо задавались вопросом, что использовать - COUNT(*) или COUNT(1), или вы послушно придерживались использования COUNT(id) на не-NULL столбце, это изменение для вас.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;Замечание:&lt;/b&gt; Эта функциональность в настоящее время реализована в основной ветке PostgreSQL (зафиксировано в ноябре 2025). Как и любая фиксация на основной ветке, она может подвергаться изменениям или даже отмене до финального релиза, хотя подобное происходит редко для зафиксированных функций. Если все будет нормально, это изменение станет частью релиза основной версии &lt;b&gt;PostgreSQL 19&lt;/b&gt;.&lt;/blockquote&gt;&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/COUNT-COUNT1-Postgres-19.html#extended&quot;&gt;Continue reading &quot;Разрешение спора между COUNT(*) и COUNT(1) в Postgres 19&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 25 Feb 2026 10:47:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3315.html</guid>
    
</item>
<item>
    <title>Лучшие практики SQL: уроки, усвоенные мной за годы работы инженером-программистом</title>
    <link>https://sql-ex.ru/blogs/?/SQL-,.html</link>
            <category>Articles</category>
            <category>Optimization</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL-,.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3314</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3314</wfw:commentRss>
    

    <author>nospam@example.com (Sergey Moiseenko)</author>
    <content:encoded>
    &lt;p style=&quot;margin: 0px 25px; font-size: 9pt;&quot;&gt;Пересказ статьи &lt;a class=&quot;let&quot; href=&quot;https://darren-tan0512.medium.com/sql-best-practices-hard-learned-lessons-from-my-years-as-a-software-engineer-1d50f6ea54b7&quot;&gt;Darren Tan. SQL Best Practices: Hard-Learned Lessons from my years as a Software Engineer&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;em&gt;База данных похожа на шутку: если ее приходится объяснять, значит, она, скорее всего, плохо спроектирована...&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
Представьте: 3 часа утра в субботу, а я сижу за столом, три часа на то, что должно быть простой обработкой пакета производственных данных. Задача казалась простой - обработать набор данных 1200 заказчиков. Что я не мог предвидеть, так это то, что на каждый вызов API должен срабатывать триггер с тысячами операций, происходящих в базе данных, превращая простую работу в ночной кошмар.&lt;br /&gt;
&lt;br /&gt;
Эта бессонная ночь субботы дала мне больше в плане понимания оптимизации SQL, чем все курсы информатики, которые я когда-либо проходил. Хотя бизнес-команда в конце концов получила свои данные (хотя и с некоторым ожиданием), я получил нечто более ценное: глубокое уважение как к силе, так и подводным камням запросов SQL.&lt;br /&gt;
&lt;br /&gt;
Являетесь ли вы начинающим разработчиком, только приступающим к работе, или опытным архитектором, я надеюсь, что, делясь усвоенными мной уроками, я помогу вам избежать некоторого негативного опыта, который я получил той ночью. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/SQL-,.html#extended&quot;&gt;Continue reading &quot;Лучшие практики SQL: уроки, усвоенные мной за годы работы инженером-программистом&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 23 Feb 2026 10:53:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3314.html</guid>
    
</item>

</channel>
</rss>
