Мне нужно найти лучший способ вставить или обновить данные в базе данных, используя sql server и asp.net. Это стандартный сценарий, если данные существуют, они обновляются, если не вставляются. Я знаю, что здесь много тем об этом, но никто не ответил на то, что мне нужно знать.
Так что моя проблема в том, что при обновлении / вставке строк 5–10 тыс. Проблем действительно не возникает, а при 50 и более.
Моей первой идеей было использование команды sql server 2008 MERGE, но у меня есть некоторые соображения по поводу производительности, если это будет 50k + строк. Также я не знаю, могу ли я пометить данные таким образом, основываясь не на первичном ключе идентификатора (int), а на другом уникальном ключе в таблице. (точнее серийный номер продукта, который не изменится во времени).
Моя вторая идея состояла в том, чтобы сначала получить все серийные номера продуктов, затем сравнить новые серийные данные с ними и разделить их на данные для вставки и данные для обновления, а затем просто сделать одну массовую вставку и одно массовое обновление.
Я просто не знаю, что будет лучше, с MERGE я не знаю, какой будет производительность, и она поддерживается только SQL Server 2008, но выглядит довольно просто, второй вариант не требует SQL В 2008 году партии должны быть быстрыми, но выбор первых всех серий и деление на их основе может привести к некоторым потерям производительности.
Каково ваше мнение, что выбрать?