Я избегаю коррелированных подзапросов (некоррелированные подзапросы и производные таблицы в порядке) и любых курсоров, которых я могу избежать. Также избегайте циклов while, если можете. Думайте с точки зрения наборов данных, а не построчно.
Если вы используете UNION, проверьте, будет ли работать UNION ALL. Существует потенциальная разница в результатах, поэтому убедитесь, что вы внесли изменения.
Я всегда смотрю на слово DISTINCT как на подсказку, чтобы увидеть, есть ли лучший способ представить данные. DISTINCT обходится дороже по сравнению с использованием производной таблицы или другого метода, чтобы избежать его использования.
Избегайте синтаксиса подразумеваемого соединения, чтобы избежать случайного перекрестного соединения (которое люди часто фиксируют, вздрагивая, с отчетливым). (Создание списка из 4 миллионов записей с последующим различием, чтобы получить три нужные вам данные, является дорогостоящим.)
Избегайте взглядов, которые вызывают другие взгляды! У нас есть люди, которые спроектировали единую клиентскую базу данных таким образом, и производительность УЖАСНА! Не идите по этому пути.
Избегайте синтаксиса, например
ГДЕ MyField Like "% test% '
Это и другие несохраняемые операторы where, которые могут помешать оптимизатору использовать индексы.