Я бы настроил «плохо работающую» базу данных, чтобы сначала определить проблемные запросы, а затем оптимизировать их, а не пытаться оптимизировать все сразу.
Вы можете использовать SQL Profiler для выявления плохо выполняющихся запросов. В зависимости от вашей системы отслеживайте соответствующие события RPC, пакета SQL, T-SQL или хранимых процедур, фильтруя события, которые занимают слишком много времени (я обычно начинаю с> 5 секунд) или которые выполняют слишком много операций чтения (я начинаю с 12800 чтений, около 100 МБ). Отследите их для подходящей продолжительности использования системы в «прайм-тайм», и вы получите представление о том, какие части вашей базы данных работают плохо, а какие - хорошо (то есть те, которые не отображаются в списке).
В качестве альтернативы, спросите своих пользователей (или себя), какие части системы работают плохо, и проверьте соответствующие запросы.
В зависимости от сложности вашей системы правильная индексация может быть немного искусством, так как стратегия оптимизации одного запроса может ухудшить производительность другого. Вы можете пройти несколько ревизий, прежде чем найдете ту, которая работает достаточно хорошо. (Именно поэтому мы называем это «тюнингом».)