Documentation
📑 Ускорение БД
Оптимизация

Куратор раздела

Data Analysis IT

Оптимизация запросов

Один из любимых вопросов от работодателей на собеседовании. Разберём, что хотят услышать интервьюеры.

1. Уменьшение объема данных

  • Используйте SELECT только нужные столбцы, без *.
  • Ограничивайте выборку по строкам фильтрами и LIMIT.

2. Оптимизация функций и выражений

  • Минимизируйте LIKE, SUBSTRING, преобразования типов в WHERE.
  • Эти операции тяжёлые и замедляют запросы на больших данных.

3. Выбор правильных индексов

  • Индексируйте поля, часто используемые в WHERE, JOIN, ORDER BY.
  • Индексы ускоряют доступ, но ставьте их умеренно.

4. Агрегации и подзапросы

  • Избегайте агрегаций и подзапросов, если можно.
  • Используйте JOIN и WITH (CTE) для промежуточных результатов, уменьшающих объём данных.

5. Оптимизация JOIN и порядка соединений

  • Порядок важен: сначала соединяйте таблицы с меньшим количеством строк.
  • Учитывайте индексированные поля при планировании порядка соединений.

6. Анализ планов выполнения (EXPLAIN)

  • Прогоняйте EXPLAIN, чтобы видеть план выполнения.
  • Ищите узкие места (full scan, неверные индексы) и переписывайте запрос.
  • Работает в PostgreSQL, MySQL, SQL Server, Oracle и др.

7. Кэширование результатов

  • Часто повторяемые запросы кэшируйте в материализованных представлениях или временных таблицах.

8. Использование партицирования

  • Делите большие таблицы на разделы по дате, региону или ключу.
  • Это позволяет читать только нужный раздел и ускоряет запросы.

9. Выбор правильного типа данных

  • Используйте INT вместо BIGINT, VARCHAR(100) вместо TEXT, когда это возможно.
  • Меньшие типы экономят место и ускоряют работу.
ℹ️

Кириллица кодируется двумя байтами, в отличие от латиницы. Например, VARCHAR(10) вмещает 5 русских или 10 латинских символов.