0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: субд, postgresql, базы данных, бд, индексы, постгрес</p>
1
<p>Теги: субд, postgresql, базы данных, бд, индексы, постгрес</p>
2
<p><strong>PostgreSQL</strong>- система, которая была унаследована от команды Майкла Стоунбрейкера и его учеников и аспирантов в Массачусетском технологическом институте. Многие решения, заложенные в PostgreSQL, опередили время и были очень удачными, что и привело к успеху разработки.</p>
2
<p><strong>PostgreSQL</strong>- система, которая была унаследована от команды Майкла Стоунбрейкера и его учеников и аспирантов в Массачусетском технологическом институте. Многие решения, заложенные в PostgreSQL, опередили время и были очень удачными, что и привело к успеху разработки.</p>
3
<p>Поговорим об особенностях индексов в PostgreSQL и тем, что их отличает от других РСУБД. Речь пойдёт о стандартных для реляционных СУБД<strong>B-tree индексах</strong>: 1. Индексы, строго говоря, являются<strong>B+ деревом</strong>, что даёт возможность прочитать страницы одного уровня, не возвращаясь каждый раз по иерархии к корневому узлу. 2. Индексы в СУБД PostgreSQL<strong>не содержат ссылку на кластерный индекс или первичный ключ</strong>, как в некоторых других (MySQL, MS SQL Server). Вместо этого, индекс в PostgreSQL содержит<strong>указатель на строку таблицы на диске (TID)</strong>. 3. Ещё одно отличие индексов в PostgreSQL:<strong>индекс не содержит информации об актуальной версии</strong>, поэтому нет возможности вычитать все данные и вернуть пользователю из индекса, даже если в SELECT выбираются только поля, входящие в индекс. Всё равно необходимо обращение к основной таблице, чтобы получить информацию об актуальных строках и вернуть их в результатах запроса.</p>
3
<p>Поговорим об особенностях индексов в PostgreSQL и тем, что их отличает от других РСУБД. Речь пойдёт о стандартных для реляционных СУБД<strong>B-tree индексах</strong>: 1. Индексы, строго говоря, являются<strong>B+ деревом</strong>, что даёт возможность прочитать страницы одного уровня, не возвращаясь каждый раз по иерархии к корневому узлу. 2. Индексы в СУБД PostgreSQL<strong>не содержат ссылку на кластерный индекс или первичный ключ</strong>, как в некоторых других (MySQL, MS SQL Server). Вместо этого, индекс в PostgreSQL содержит<strong>указатель на строку таблицы на диске (TID)</strong>. 3. Ещё одно отличие индексов в PostgreSQL:<strong>индекс не содержит информации об актуальной версии</strong>, поэтому нет возможности вычитать все данные и вернуть пользователю из индекса, даже если в SELECT выбираются только поля, входящие в индекс. Всё равно необходимо обращение к основной таблице, чтобы получить информацию об актуальных строках и вернуть их в результатах запроса.</p>
4
<p>Эти особенности важно учитывать при планировании и создании индексов для БД, а также анализировать, насколько индекс используется и используется ли вообще, ведь иногда оптимизатор имеет своё мнение, которое может сильно отличаться от замысла автора запроса и индекса.</p>
4
<p>Эти особенности важно учитывать при планировании и создании индексов для БД, а также анализировать, насколько индекс используется и используется ли вообще, ведь иногда оптимизатор имеет своё мнение, которое может сильно отличаться от замысла автора запроса и индекса.</p>
5
<p>Подробнее можно почитать здесь: 1.<a>Цикл Егора Рогова на Хабре</a>. 2.<a>Laurenz Albe Get rid of your unused indexes</a>.</p>
5
<p>Подробнее можно почитать здесь: 1.<a>Цикл Егора Рогова на Хабре</a>. 2.<a>Laurenz Albe Get rid of your unused indexes</a>.</p>
6
6