Я выполняю пару запросов с относительно большими наборами результатов (300К строк) и вставляю их в таблицы в цепочке:
Массовая вставка данных в Table0 , затем чтение данных из Table0 и массовая вставка в Table1 , чтение из Table1 вставка Table2 и т. Д. Для чтения данных я использую команду ADO.NET, которая запускает хранимую процедуру exec_sql
в фоновом режиме.
Я испытал интересное явление. Когда я воссоздаю базу данных и запускаю весь процесс на нескольких таблицах, это занимает примерно 20 секунд для каждой. Однако при каждом последующем выполнении процесса выполнение запросов занимает всего 10 секунд. Перед вставкой данных таблицы всегда усекаются, поэтому объем данных не увеличивается.
Сначала я подумал, что это как-то связано с кэшированными планами выполнения, поэтому я очистил кэш с помощью DBCC FREEPROCCACHE
после 2-го запуска, а 3-й - все еще 10 секунд.
Есть ли какие-либо другие вещи, которые происходят, когда запрос выполняется впервые, и могут ли они быть выяснены быстрее (то есть без фактического выполнения запроса)?