Разобрать следующие ошибки при написании запросов

  1. Извлекать больше данных без необходимости.
  2. Писать избыточно много подзапросов. решение использовать JOIN или временные таблицы
  3. Фильтровать данные не в начале, а на последних стадиях.
  4. Использовать UNION вместо UNION ALL
  5. Использовать DISTINCT тогда когда он не нужен
  6. Использовать LEFT JOIN и фильтрацию вместо JOIN
  7. Работать неправильно с NULL значениями
  8. Использовать фильтрацию по полям с индексами неправильно

Посмотреть еще из раздела оптимизации правила которые писал
Почему важно оптимизировать
SQL запросы
Давай поговорим на что влияет как написан твой запрос
  • Скорость запроса
    Чем правильней технически и логически написан запрос, тем быстрей его выполнит база данных. Разница между оптимизированным и нет запросами может выражаться в минутах или даже десятках минут
  • Затраты ресурсов базы
    База данных как твой телефон имеет ограниченные ресурсы: память хранения, оперативная память, ядра процессора. Некачественные запросы задействуют больше ресурсов для выполнения, что может приводить к зависаниям или даже падениям базы данных, что очень критично для бизнес-процессов компании. Чем больше ресурсов используется тем больше придется платить за базу, поэтому все стремятся к оптимизации.
  • Чистота кода
    В нормальных компаниях принято писать запросы в едином стиле (style guide), чтобы дальше этот код можно было удобно поддерживать и развивать с процессом появления новых задач
  • Качество данных
    Ты не просто пишешь запросы к данным, а работаешь с данными. Если пишешь некачественно или с неявными ошибками, это напрямую влияет на данные, которые получаешь в результате запроса, которые будешь анализировать или отдавать дальше в отчеты
Правила оптимизации
SQL запросов
Эти правила прокачают твой навык написания SQL кода на новый уровень!
--так не делай
SELECT *
FROM customer_reg r
LEFT JOIN (SELECT * FROM customer_auth WHERE rn_first = 1) af 
ON r.customer_id = af.customer_id
LEFT JOIN (SELECT * FROM customer_auth WHERE rn_last = 1) al 
ON r.customer_id = al.customer_id
;

--делай так
SELECT *
FROM customer_reg r
LEFT JOIN customer_auth af 
ON r.customer_id = af.customer_id
AND af.rn_first = 1
LEFT JOIN customer_auth al 
ON r.customer_id = al.customer_id
AND al.rn_last = 1