У меня есть одна хранимая процедура, которая вставляет данные в 3 таблицы (делает UPSERTS) и имеет некоторую рудиментарную логику. (IF-THEN-ELSE)
Мне нужно выполнить этот Sproc миллионы раз (из приложения C #), используя разные параметры, и мне нужно, чтобы он был БЫСТРОМ.
Каков наилучший способ сделать это?
Кто-нибудь знает с открытым исходным кодом (или нет) готовый индексатор документов, кроме Lucene или Sql Server FTS ??
* Я пытаюсь создать словесный указатель документа. Для каждого слова в документе я вставляю в БД слово, docID и положение слова.
Это происходит, например, 100000 раз для 100 документов.
Sproc : есть 3 таблицы для вставки, для каждой из которых я делаю UPSERT.
Приложение C # :
using (SqlConnection con = new SqlConnection(_connectionString))
{
con.Open();
SqlTransaction trans = con.BeginTransaction();
SqlCommand command = new SqlCommand("add_word", con, trans);
command.CommandType = System.Data.CommandType.StoredProcedure;
string[] TextArray;
for (int i = 0; i < Document.NumberOfFields; i++)
{
...
Addword(..., command); <---- this updates parameters with new values and ExecuteNonQuery.
}
}
Забыл упомянуть, этот код вызывает взаимные блокировки в Sql Server. Я понятия не имею, почему это происходит.