TGViewer
Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) @dima_sqlit · 2.27K subscribers
Post #111 1.64K
🗒 Оптимизация SQL запросов: что такое партиции и индексы простыми словами. Часть 1

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

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

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

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

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

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

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

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

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

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

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

Итог:

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

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

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

@dima_sqlit
  • 🔥 34
  • ❤‍🔥 6
  • 🐳 5
More from @dima_sqlit
  1. Sep 22, 2026Что сейчас стоит изучать Аналитику — чтобы перейти в DS/ML ? Замечаю общий тренд на изучен…
  2. Sep 21, 2026🧠 Уровень абстракции — навык, который сэкономит вам годы учёбы: Когда я начинал изучать P…
  3. Sep 18, 2026🏦 Задача с собеса в Т-банк на SQL: вторая зарплата в отделе Условие: есть таблица сотрудн…
  4. Sep 16, 2026🏠 IT ипотека (Часть 3) — Как я сэкономил на ремонте: кэшбэк, промокоды и один неочевидный…
  5. Sep 7, 2026🍂 Осень — сезон найма: Каждый год одна и та же история — в сентябре рынок будто просыпает…
  6. Aug 24, 2026P-value простыми словами: Условие: подбросили монету 10 раз, выпало 9 орлов. Можно ли тепе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →