PostgreSQL Performance & Query Optimization · Урок

Составные и покрывающие индексы

Ускорьте запросы по нескольким столбцам с помощью составных индексов и полностью устраните обращения к таблице, используя покрывающие индексы с INCLUDE

Урок 4 из 413 шагов

«Составные и покрывающие индексы» — бесплатный урок PostgreSQL Performance & Query Optimization на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PostgreSQL Performance & Query Optimization, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PostgreSQL Performance & Query Optimization содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Beyond Single-Column Indexes

Many queries filter on more than one column. A composite index spans multiple columns and can serve such queries far better than separate single-column indexes.

Creating a Composite Index

List columns in the order you want them indexed.

CREATE INDEX idx_orders_cust_date
ON orders (customer_id, order_date);

Column Order Matters

A composite index on (a, b) helps queries filtering on a alone or a AND b, but generally NOT queries filtering only on b.

The Leftmost Prefix Rule

PostgreSQL can use any leftmost prefix of the index. So (a, b, c) serves filters on a, on a+b, and on a+b+c.

Ordering by Selectivity

Put the most selective or most frequently filtered column first, often an equality column before a range column, to maximize how many rows the index eliminates early.

CREATE INDEX idx_orders_status_date
ON orders (status, order_date);

The Heap Lookup Cost

A normal index scan finds matching rows then visits the table (the heap) to read the other columns. Those extra fetches cost I/O.

Covering Indexes

A covering index contains every column the query needs, so PostgreSQL answers from the index alone, an Index Only Scan, with no heap visit.

Using INCLUDE

The INCLUDE clause adds non-key columns to the index leaf pages so they are available without being part of the searchable key.

CREATE INDEX idx_orders_cust_incl
ON orders (customer_id)
INCLUDE (order_date, total);

Confirming Index Only Scan

Check the plan; you want to see Index Only Scan rather than Index Scan plus heap fetches.

EXPLAIN ANALYZE
SELECT order_date, total
FROM orders WHERE customer_id = 42;

The Visibility Map Caveat

Index Only Scans still need the heap when pages are not marked all-visible. Keeping tables well-vacuumed maintains the visibility map so scans stay index-only.

VACUUM ANALYZE orders;

Costs of Wide Indexes

More columns mean larger indexes and slower writes. Add covering columns only for hot queries, not everywhere.

Quick Check

Test what you have learned.

Recap

You learned how composite indexes serve multi-column filters under the leftmost prefix rule, how column order and selectivity matter, and how covering indexes with INCLUDE enable Index Only Scans, balanced against larger size and write cost.

Можно начать бесплатно

Изучай SQL с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
22
Уроки
88

Часто задаваемые вопросы

Урок «Составные и покрывающие индексы» бесплатный?

Да — полный текст урока «Составные и покрывающие индексы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PostgreSQL Performance & Query Optimization, подпишись на CoddyKit PRO. Курс PostgreSQL Performance & Query Optimization содержит 4 уроков всего.

Чему я научусь в уроке «Составные и покрывающие индексы»?

Ускорьте запросы по нескольким столбцам с помощью составных индексов и полностью устраните обращения к таблице, используя покрывающие индексы с INCLUDE Ты практикуешь PostgreSQL Performance & Query Optimization с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PostgreSQL Performance & Query Optimization?

Предыдущий опыт не требуется. PostgreSQL Performance & Query Optimization на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Составные и покрывающие индексы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PostgreSQL Performance & Query Optimization?

Да. Каждый урок PostgreSQL Performance & Query Optimization включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы B-Tree-индексов
  2. Создание и использование индексов
  3. Когда и как создавать индексы
  4. Составные и покрывающие индексы
← Назад к PostgreSQL Performance & Query Optimization