Не уверен, какую версию SQL Server вы используете (2005 или 2008) - но независимо от того, какую версию вы используете, я не вижу большого преимущества в использовании CTE в этом случае для нескольких вставок, честно говоря. CTE действительно хороши для очень многих ситуаций, но это не одна из них.
Итак, я бы предложил вам использовать несколько INSERT
утверждений.
В SQL Server 2008 вы могли бы упростить их, просто указав несколько значений:
INSERT INTO MyTable (MyField)
VALUES ('Hello'), ('World'), ('and outer space')
Как всегда, структура вашей таблицы, наличие (или отсутствие) индексов и триггеров действительно оказывает существенное влияние на вашу скорость INSERT. Если вам нужно загрузить много данных, иногда проще отключить эти ограничения и отключить их на время INSERT, а затем снова включить, - но опять-таки: на самом деле нет никакого способа дать вам четкое указание, так ли это в вашей ситуации. конкретная ситуация или нет - просто слишком много переменных, о которых мы не знаем, играют значительную роль. Измерьте это, сравните это, примите решение для себя!