Ответ
Misha v.3 25.02.2008 20:22
1. создаёте временную таблицу
2. load data infile в неё (это выполнитеся гораздо быстрее чем куча insert)
3. создаёте на ней необходимые индексы (чтобы быстре выполнился п. 4)
4. выполняете update вашей живой таблицы на основании данных во временной (это будет 1 update и 1 delete плюс, если данные могут добавиться -- один insert+select)
5. удаляете временную таблицу
про все вышеописанное есть информация в доке sql сервера. такой вариант работает для mysql, pgsql, oracle (про mssql не знаю: есть ли у него возможность загрузить данные пачкой из файла). и обычно процедура апдейта (это пункт 4, остальное -- подготовка, которая не блокирует живые таблицы) происходит быстрее чем большие пачки insert/update.