1. Выбирайте только нужные столбцы. Вместо
SELECT * перечисляйте поля: это уменьшает объём передаваемых данных.2. Создавайте подходящие индексы. Учитывайте столбцы, используемые в
WHERE, JOIN и ORDER BY.3. Избегайте функций над индексируемыми столбцами в условиях. Вместо
YEAR(date) = 2024 используйте диапазон дат — он может позволить использовать обычный индекс.4. Используйте
EXISTS для проверки существования строк. Но не считайте его всегда быстрее IN: сравнивайте планы выполнения.5. Ограничивайте выдачу через
LIMIT или TOP. Это сокращает результат, но не обязательно объём работы базы данных.6. Сравнивайте
JOIN и подзапросы. Выбирайте вариант с нужной семантикой и лучшим планом: объединение не всегда быстрее и может размножать строки.7. Отсекайте ненужные строки через
WHERE. Чем меньше данных обрабатывается дальше, тем лучше; фактический порядок операций определяет оптимизатор.8. Не используйте
DISTINCT без необходимости. Удаление дубликатов требует ресурсов. Проверьте, не возникают ли они из-за ошибочного объединения.9. Выбирайте
UNION ALL, если удалять дубликаты не нужно. В отличие от UNION, он сохраняет все строки и не тратит ресурсы на устранение повторов.10. Анализируйте планы выполнения. Используйте
EXPLAIN и, где доступно, EXPLAIN ANALYZE, чтобы находить узкие места. Помните: EXPLAIN ANALYZE действительно выполняет запрос.👉 @SQLPortal
