<?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>Wed, 25 Feb 2026 07:47: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>Разрешение спора между 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>
<item>
    <title>Предложение VALUES или создание таблиц из ничего</title>
    <link>https://sql-ex.ru/blogs/?/VALUES.html</link>
            <category>MySQL</category>
            <category>Optimization</category>
            <category>Oracle</category>
            <category>PostgreSQL</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/VALUES.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3308</wfw:comment>

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

    <author>nospam@example.com (mssqlhelp)</author>
    <content:encoded>
    &lt;p&gt;Автор: &lt;a href=&quot;https://www.red-gate.com/simple-talk/author/joe-celko/&quot;&gt;Joe Celko&lt;/a&gt;, &lt;a href=&quot;https://www.red-gate.com/simple-talk/databases/theory-and-design/values-clause-building-tables-out-nothing/&quot;&gt;The VALUES clause or building tables out of nothing&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Предложение VALUES, вероятно, одна из самых неправильно используемых возможностей в SQL. Если вы посмотрите на онлайн-форумы по SQL, вы увидите, что люди используют его как второе предложение в операторе вставки, но используют его для построения только одной строки за раз, например так:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;BEGIN&lt;br /&gt;
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)&lt;br /&gt;
 VALUES (&#039;Aries&#039;, &#039;2025-03-21&#039;, &#039;2025-04-19&#039;);&lt;br /&gt;
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)&lt;br /&gt;
 VALUES (&#039;Taurus&#039;, &#039;2025-04-20&#039;, &#039;2025-05-20&#039;);&lt;br /&gt;
… &lt;br /&gt;
INSERT INTO Zodiac (astro_sign, astro_start_date, astro_end_date)&lt;br /&gt;
 VALUES (&#039;Pisces&#039;, &#039;2023-05-19&#039;, &#039;2026-03-20&#039;);&lt;br /&gt;
END;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Каждый оператор вставки заканчивается точкой с запятой, поэтому они будут выполняться отдельно и в представленном порядке. Оптимизатор не осмеливается их объединять, потому что может быть прямая ссылка на предыдущие вставки.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Я думаю, люди пишут такой код, потому что именно так вы бы читали перфокарты. Каждая карта поступает в устройство чтения карт, буферизуется и записывается в порядке поступления на магнитную ленту или дисковый файл. Добро пожаловать в 1960-е! Перестаньте подражать старым языкам программирования, таким как FORTRAN или BASIC, в которых были операторы WRITE, помещающие по одной записи за раз в файл. Начните думать о работе с целыми множествами.&lt;/p&gt; &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/VALUES.html#extended&quot;&gt;Continue reading &quot;Предложение VALUES или создание таблиц из ничего&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 16 Feb 2026 18:08:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3308.html</guid>
    
</item>
<item>
    <title>Повышение производительности PostgreSQL: пошаговое руководство по использованию pg_hint_plan</title>
    <link>https://sql-ex.ru/blogs/?/PostgreSQL-pg_hint_plan.html</link>
            <category>Optimization</category>
            <category>PostgreSQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/PostgreSQL-pg_hint_plan.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3278</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3278</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/@valentim.dba/mastering-postgresql-performance-a-step-by-step-guide-to-pg-hint-plan-e21239df4b90&quot;&gt;Matheus dos Santos. Mastering PostgreSQL Performance: A Step-by-Step Guide to pg_hint_plan&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Планировщик запросов PostgreSQL - это сложный инженерный механизм, обычно принимающий блестящие решения относительно того, как выполнять ваши запросы. Однако в сложных сценариях или при необычных распределениях данных вы можете знать лучший способ. Именно в таких ситуациях на помощь приходит pg_hint_plan - мощное расширение, которое позволяет вам руководить, или &quot;советовать&quot;, планировщиком для выбора специфичного пути выполнения.&lt;br /&gt;
&lt;br /&gt;
Это руководство проведет вас через весь процесс, начиная с установки pg_hint_plan из источника до использования его, чтобы принудительно выполнить сканирование индекса на большом наборе данных,  демонстрируя возможности непосредственного управления производительностью вашего запроса.&lt;br /&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/PostgreSQL-pg_hint_plan.html#extended&quot;&gt;Continue reading &quot;Повышение производительности PostgreSQL: пошаговое руководство по использованию pg_hint_plan&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 12 Jan 2026 11:04:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3278.html</guid>
    
</item>
<item>
    <title>Настройка производительности в Oracle: практические методы, которыми должен владеть каждый DBA</title>
    <link>https://sql-ex.ru/blogs/?/Oracle-,-DBA.html</link>
            <category>Optimization</category>
            <category>Oracle</category>
    
    <comments>https://sql-ex.ru/blogs/?/Oracle-,-DBA.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3273</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3273</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.sqlservercentral.com/articles/oracle-performance-tuning-practical-techniques-every-dba-should-master&quot;&gt;Udaya Veeramreddygari. Oracle Performance Tuning: Practical Techniques Every DBA Should Master&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Как специалисты по базам данных, мы все сталкивались с этим ужасным моментом, когда пользователи начинают жаловаться на медленные запросы, и внезапно все смотрят на вас с выражением «исправьте это сейчас же». Настройка производительности Oracle может показаться невероятно сложной, особенно в условиях стресса, но хорошая новость состоит в том, что большинство проблем с производительностью возникают по нескольким распространённым причинам. Позвольте мне рассказать вам о нескольких проверенных методах, которые спасали мне жизнь больше раз, чем я могу сосчитать.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Начнем с самого простого: статистика и планы выполнения&lt;/h2&gt;&lt;br /&gt;
Прежде чем перейти с сложным стратегиям настройки, всегда проверяйте актуальность вашей статистики. Оптимизатор Oracle на основе стоимости всецело опирается на точность статистики для принятия умных решений относительно путей выполнения запросов. Мне приходилось видеть запросы, которые выполнялись в 10 раз медленнее только потому, что кто-то забыл обновить статистику после загрузки большого объема данных. &lt;a class=&quot;block_level&quot; href=&quot;https://sql-ex.ru/blogs/?/Oracle-,-DBA.html#extended&quot;&gt;Continue reading &quot;Настройка производительности в Oracle: практические методы, которыми должен владеть каждый DBA&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Sun, 04 Jan 2026 23:51:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3273.html</guid>
    
</item>
<item>
    <title>Сравнение перестройки и реорганизации индексов SQL</title>
    <link>https://sql-ex.ru/blogs/?/SQL.html</link>
            <category>Optimization</category>
            <category>T-SQL</category>
    
    <comments>https://sql-ex.ru/blogs/?/SQL.html#comments</comments>
    <wfw:comment>https://sql-ex.ru/blogs/wfwcomment.php?cid=3263</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://sql-ex.ru/blogs/rss.php?version=2.0&amp;type=comments&amp;cid=3263</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/8063/sql-index-rebuild-vs-reorganize-comparison/&quot;&gt;Sergey Gigoyan. SQL Index Rebuild vs Reorganize Comparison&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
При модификации данных в базе данных SQL соответствующие индексы тоже изменяются. Эти изменения приводят к фрагментации индексов. Фрагментация означает, что логический порядок данных на страницах индекса не соответствует физическому порядку. Во фрагментированных индексах информация не располагается логически, что делает операции извлечения данных из индекса более затратными по времени, это приводит к проблемам производительности запросов. Таким образом, фрагментацию индексов следует периодически устранять для поддержания высокой производительности. Операции перестройки и реорганизации индекса как раз направлены на дефрагментацию индексов.&lt;br /&gt;
&lt;br /&gt;
В данной статье мы рассмотрим то, что является общим и различным в этих операциях. Прежде чем начать, мы объясним некоторые важные связанные с ними понятия. В частности, ту информацию, которая стоит за коэффициентом заполнения и статистикой, т.к. эти понятия упоминаются при обсуждении операций по перестроению и реорганизации индекса.&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>Wed, 17 Dec 2025 23:10:00 +0300</pubDate>
    <guid isPermaLink="false">https://sql-ex.ru/blogs/?/3263.html</guid>
    
</item>

</channel>
</rss>
