Один из любимых вопросов от работодателей на собеседовании.
Чтож давайте разберемся, что от вас желают услышать интервьюеры
1. Уменьшение объема данных
• Используйте SELECT только нужные столбцы, вроде база, но так и тянет многих обычно нажать на любимую всеми звездочку.
• Ограничьте выборку по строкам, используя фильтры и лимиты.
2. Оптимизация функций и выражений
• Как можно меньшее использование LIKE, SUBSTRING, и преобразования типов, особенно в WHERE-условиях.
• Эти операции очень тяжелые в обработке и могут замедлить запрос (особенно с большими данными).
3. Выбор правильных индексов
• Индексирование наиболее используемых полей (часто используемых в WHERE, JOIN, и ORDER BY).
• Индексы ускоряют доступ к данным, но важно понимать меру и не лепить их 50 штук.
4. Агрегации и подзапросы
• Для оптимизации избегайте агрегаций и подзапросов, когда это возможно.
• Вместо них старайтесь использовать JOIN и WITH (CTE) для промежуточных результатов, если они приводят к меньшему объему данных на выходе.
5.Оптимизация JOIN и порядка соединений
• Порядок JOIN-ов важен: сначала соединяйте таблицы с меньшим количеством строк, чтобы уменьшить объем промежуточных данных.
• По возможности, оптимизируйте порядок с учетом индексированных полей.
6. Анализ планов выполнения (EXPLAIN)
• Используйте EXPLAIN для понимания, как база данных выполняет запрос.
• Смотрите на узкие места, как последовательность сканирования таблиц, индексы, и перезаписывайте запрос при необходимости.
• Поддерживается в: PostgreSQL, MySQL, SQL Server, Oracle (храни его господь) и другие...
7. Кэширование результатов
• Если один и тот же запрос крутите 10 раз, рассмотрите кэширование результатов в материальном представлении (materialized view) или временной таблице, чтобы не рассчитывать их каждый раз заново.
8. Использование партицирования (Partitioning)
• Разделение больших таблиц на разделы (partitioning) по датам или регионам (или другому подходящему полю)
• Позволяет базе данных обращаться только к нужному разделу, ускоряя запросы.
9. Выбор правильного типа данных
• Использование INT вместо BIGINT или VARCHAR(100) вместо TEXT экономит место и снижает объем данных, с которыми работают запросы, ускоряя их выполнение.
Очень важный поинт:
Кириллица кодируется 2мя байтами, в отличии от латиницы, то есть varchar(10) может содержать 5 ру символов, либо 10 en символов
Какие способы вы бы еще добавили сюда?

