SQL Server 2008 работает на Windows Server Enterprise (?) Издание 2008SQL Server ORDER BY Performance аберрация
У меня есть запрос присоединения к двадцати некоторых-нечетные таблицы (в основном LEFT OUTER JOIN и). Полный набор данных, возвращаемый нефильтрованным запросом, возвращает менее 1000 строк менее чем за 1 секунду. Когда я применяю предложение WHERE для фильтрации запроса, он возвращает менее 300 строк менее чем за 1 секунду.
Когда я применяю предложение ORDER BY к запросу, оно возвращается в 90-х годах.
Я изучил результаты запроса и заметил ряд результатов NULL, возвращаемых в столбце, который используется для сортировки. Я изменил запрос на COALESCE на значение NULL на допустимое значение поиска без каких-либо изменений в производительности запроса.
Я тогда сделал
SELECT * FROM
(
my query goes here
) qry
ORDER BY myOrderByHere
И получают те же результаты.
Когда я ВЫБИРАЮ ... INTO #tempTable (без ORDER BY), а затем SELECT FROM #tempTable с порядком запроса возвращает менее чем за 1 секунду.
На самом деле странно, что SELECT ... INTO также займет 90 секунд даже без ORDER BY.
В плане выполнения указано, что SORT занимает 98% времени выполнения, когда он включен в основной запрос. Если я выполняю INSERT INTO, в плане объяснения говорится, что фактическая вставка в временную таблицу занимает 99% времени выполнения.
И, чтобы устранить проблемы с сервером, я выполнил те же тесты в двух разных экземплярах SQL Server 2008 с почти одинаковыми результатами.
Большое спасибо!
операции rjsjr
На моем Dev/тестовый сервер временной базы данных является 400MB большой и имеет Доступно 400 МБ пространства. В разделе «Восстановление» я вижу, что параметр «Проверка страницы» установлен на «CHECKSUM». Я убедился, что файл журнала был усечен и повторно запускал тесты без каких-либо изменений в результатах. Я также попытался переместить основную часть запроса в VIEW и выполнить SELECT и ORDER на этом представлении. Это дает те же результаты. –