Я провел несколько тестов скорости для запроса, где я вставляю 10 000 записей в таблицу, в которой миллионы (более 24 миллионов) записей.Запрос (ниже) не будет вставлять повторяющиеся записи.
MERGE INTO [dbo].[tbl1] AS tbl
USING (SELECT col2,col3, max(col4) col4, max(col5) col5, max(col6) col6 FROM #tmp group by col2, col3) AS src
ON (tbl.col2 = src.col2 AND tbl.col3 = src.col3)
WHEN NOT MATCHED THEN
INSERT (col2,col3,col4,col5,col6)
VALUES (src.col2,src.col3,src.col4,src.col5,src.col6);
Время выполнения вышеуказанного запроса является случайным;в диапазоне от 0:02 до 2:00 минут.
Я запускаю эти тесты в SQL Server Studio с помощью сценария, который создает 10000 строк данных (в таблицу #tmp), а затем запускается приведенный выше запрос MERGE.Дело в том, что для каждого теста, который я запускаю, выполняется один и тот же сценарий.
Время выполнения отскакивает от секунд до минут, как в:
- Тест № 1: 0:10 секунд
- Тест № 2: 1:13 минут
- Тест № 3: 0:02 секунд
- Тест № 4: 1:56 минут
- Тест № 5: 0:05 секунд
- Тест № 6: 1:22 минуты
Одна метрика, которую я нахожу интересной, состоит в том, что чередующаяся последовательность секунд / минут является относительно последовательной, то есть при любом другом тесте результаты представлены в секундах.дайте мне какие-нибудь подсказки относительно того, что может быть причиной того, что этот запрос имеет такие спорадические времена выполнения?