TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
Дима SQL-ит 🧑‍💻 (Аналитика данных, AI)

15 Dec 2025, 09:02

Open in Telegram Share Report

🗒 Оптимизация SQL запросов: что такое партиции и индексы простыми словами. Часть 1

На собеседованиях часто спрашивают:
«Какие методы оптимизации SQL-запросов вы знаете?»

И спрашивают не зря. При работе с большими объёмами данных с этим сталкиваешься постоянно. В этом посте разберём базовые вещи — что такое партиционирование и индексирование и как они работают на уровне идеи. Практические примеры будут во второй части.

1) Что такое партиции? 🟢
• Представим таблицу, в которой хранятся списания клиентов банка. Объём данных там огромный. Часто кажется, что достаточно просто написать фильтр по дате, и всё будет быстро. Но если таблица большая, SQL начнёт читать её целиком — строка за строкой, проверяя условие у каждой записи. Это полный скан таблицы, и он дорогой.

• Теперь представим жизненный пример. У вас есть тысячи фотографий. Обычно люди раскладывают их по годам. И если нужно посмотреть фотографии за конкретный год, вы не открываете все остальные — сразу идёте в нужную папку и экономите время.

• Партиционирование работает точно так же. Таблица физически делится на части — партиции. Чаще всего это делают по дате. В итоге, когда мы хотим посчитать списания клиента за конкретный месяц, запрос сразу идёт только в нужный диапазон дат и не читает всё остальное. На больших объёмах данных это даёт очень ощутимый прирост.

2) Что такое индексы? 🟢
• Продолжим аналогию с фотографиями. Мы уже разложили фото по годам — стало быстрее. Но допустим, в одном году фотографий всё равно очень много, и мы хотим найти конкретные — например, с дня рождения.

• Было бы удобно иметь файл с описанием, где написано:
фото 1–10 — путешествие
фото 20–25 — день рождения
фото 40–50 — работа
По сути, это содержание книги. Именно так работают индексы.

• Индекс — это отдельная структура, которая хранит значения столбца и знает, где физически лежат строки с этими значениями. Когда в запросе используется условие в WHERE или JOIN, база данных сначала смотрит в индекс, а затем читает только нужные строки, а не всю таблицу.

• Важно понимать: индекс не уменьшает объём данных, он ускоряет поиск внутри них.

3) Партиции и индексы вместе: 🟢
• Теперь картинка складывается полностью.
Партиционирование помогает не читать лишние данные.
Индексы помогают быстро находить нужные строки.

• На практике часто делают так: таблицу партиционируют, например, по дате, а внутри каждой партиции создают индексы.

Итог:

Партиционирование физически делит большую таблицу на части.
Индексы ускоряют поиск данных внутри таблицы или партиции.
Это разные инструменты, которые дополняют друг друга.

❤️Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ А вы в своей работе чаще используете индексы или партиционирование?
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

Провожу консультации (подробности здесь):
🚬 Вопросы, обучение, консультации

@dima_sqlit

1.7k 1 30 26 45
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot