Базы данных, в частности, нелегко реорганизовать и часто являются самым большим узким местом в системе из-за дизайнеров, которые думают, что им не нужно заботиться о производительности при разработке. Это недальновидно. Существует много известных оптимизаций базы данных, которые почти всегда будут быстрее. Не использовать их в своем дизайне и первоначальном кодировании, чтобы избежать «преждевременной оптимизации», глупо. Например, курсор почти никогда (если вы не ищете промежуточные итоги) будет работать лучше, чем запрос на основе множеств в SQl Server. Писать курсор вместо запроса на основе набора не быстрее (если вы понимаете запросы на основе набора), поэтому нет смысла начинать с кода на основе курсора. То же самое с производными таблицами вице-подзапросов. Почему писать код, который вы знаете, 90% времени будет медленнее, чем другой код, который занимает столько же времени?
Выбор инструмента, который впоследствии затрудняет настройку производительности, также является недальновидным решением, поэтому при рассмотрении вопроса о том, как вы собираетесь обращаться к базе данных, это должно быть частью того, что вы считаете.
Любой, кто кодирует базу данных или разрабатывает ее, должен уделить время ознакомлению с настройкой производительности для конкретной базы данных. Заранее зная, как написать sargeable запрос и какие вещи должны иметь индексы, с которыми вы начинаете, и каковы обычные виды узких мест, вы сможете лучше справиться с работой с первого раза.