Вот несколько советов, собранных на многих веб-сайтах, с опытом работы в отрасли и от опытного и опытного друга «SQL-GOD». Надеюсь, они тебе помогут.

ПРИМЕЧАНИЕ. Многие из следующих пунктов следует рассматривать как практические правила (каждый механизм SQL работает по-своему, и лучший способ полагается на многие переменные, такие как данные, запрос, индексы, объем и т. Д.)

  1. Предпочитайте объединения подзапросам (максимально сокращайте количество подзапросов). Старайтесь избегать подзапросов с внешними ссылками, например: внутреннее соединение (выберите… ..) как B на A.id = B.id
  2. Сведите к минимуму функции / «операции» в поля, такие как cast («:: varchar», «cast (field as int)») или replace / substring / convert / coalesce / etc…. Если вам действительно нужно выполнить какой-либо из них, вызовите их вверху запроса (результат после применения всех остальных фильтров). Было бы лучше улучшить типы данных базы данных в источнике.
  3. Соединения типа «int» быстрее, чем соединения «varchar» (по крайней мере, должны быть)
  4. Всегда предпочитать внутренние соединения, если это разрешено (левое и правое соединения выполняют работу для внутреннего соединения плюс дополнительная работа)
  5. Используйте редактор (VSCode, Sublimte, Atom,…) с возможностью рефакторинга / переименования (это похоже на улучшенную команду поиска и замены). Указатели на таблицы / подзапросы могут быть вначале классическими a, b, c,…, t1, t2, t3…, но когда вы будете готовы со своим запросом, они должны быть переименованы в исходные имена таблицы или содержательный и описательный псевдоним. Это очень просто с опцией рефакторинга. Это сделает ваш сценарий более читабельным для всех, кто будет проверять, что вы сделали (включая ваше будущее).
  6. Если было сложно внести какие-либо улучшения в модель данных или это невозможно, то используйте новые модели / таблицы предварительного расчета, которые подготавливают данные каждые X часов. или в соответствии с потребностями бизнеса. Затем работайте с этими таблицами аккуратно, не преобразовывая данные в запросы. Это не бесплатно, это требует много места на диске и для реализации обработки.
  7. Спросите у администратора базы данных индексы для таблиц, это очень поможет, если они еще не были настроены.

Если вам понравилась эта статья, дайте мне знать, что, хлопнув в ладоши, я буду очень благодарен.