Ответ 1
Я думаю, что я где-то читал, что механизм базы данных SQL Server 2005 должен быть примерно на 30% быстрее, чем движок SQL Server 2000. Возможно, вам нужно запустить свою базу данных в режиме совместимости 90, чтобы получить эти преимущества.
Но я наткнулся на два сценария, где производительность может резко упасть при использовании mssql 2005 по сравнению с mssql 2000:
-
Параметр Sniffing: при использовании хранимой процедуры сервер sql вычисляет ровно один план выполнения в то время, вы сначала вызываете процедуру. План выполнения зависит от значений параметров, заданных для этого вызова. В нашем случае процедуры, которые обычно занимают около 10 секунд, работают в течение нескольких часов в mssql 2005. Взгляните здесь и здесь.
-
При использовании распределенных запросов mssql 2005 ведет себя по-разному относительно предположений о порядке сортировки на удаленном сервере. Поведение по умолчанию состоит в том, что сервер копирует все удаленные таблицы, участвующие в запросе, в локальный tempdb, а затем выполняет соединения локально. Обходным путем является использование OPENQUERY, где вы можете точно контролировать, какие результаты передаются с удаленного сервера.