Массовая вставка / обновление SQL Server против MERGE в сценарии вставки или обновления - PullRequest
7 голосов
/ 24 сентября 2010

Мне нужно найти лучший способ вставить или обновить данные в базе данных, используя sql server и asp.net. Это стандартный сценарий, если данные существуют, они обновляются, если не вставляются. Я знаю, что здесь много тем об этом, но никто не ответил на то, что мне нужно знать.

Так что моя проблема в том, что при обновлении / вставке строк 5–10 тыс. Проблем действительно не возникает, а при 50 и более.

Моей первой идеей было использование команды sql server 2008 MERGE, но у меня есть некоторые соображения по поводу производительности, если это будет 50k + строк. Также я не знаю, могу ли я пометить данные таким образом, основываясь не на первичном ключе идентификатора (int), а на другом уникальном ключе в таблице. (точнее серийный номер продукта, который не изменится во времени).

Моя вторая идея состояла в том, чтобы сначала получить все серийные номера продуктов, затем сравнить новые серийные данные с ними и разделить их на данные для вставки и данные для обновления, а затем просто сделать одну массовую вставку и одно массовое обновление.

Я просто не знаю, что будет лучше, с MERGE я не знаю, какой будет производительность, и она поддерживается только SQL Server 2008, но выглядит довольно просто, второй вариант не требует SQL В 2008 году партии должны быть быстрыми, но выбор первых всех серий и деление на их основе может привести к некоторым потерям производительности.

Каково ваше мнение, что выбрать?

Ответы [ 2 ]

5 голосов
/ 24 сентября 2010

Лучше объединять производительность, потому что «Одним из наиболее важных преимуществ оператора MERGE является то, что все данные читаются и обрабатываются только один раз»

Вам не нужен первичный ключ, вы можете объединить одно или несколько полейчто делает ваши записи уникальными

2 голосов
/ 24 сентября 2010

Не должно быть проблем с выполнением слияния с серийным номером, как вы его описали.Возможно, вы захотите прочитать Оптимизация производительности MERGE Statement , чтобы ознакомиться с рекомендациями Microsoft по использованию MERGE .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...