У меня есть таблица, которая имеет 1.400.000 записей.Это простой список документов
Таблица - Документ
- ID int
- DocumentPath nvarchar
- DocumentValid bit
Я сканирую каталог и устанавливаю любой документ, найденный в каталоге, как действительный.
public void SetReportsToValidated(List<int> validatedReports)
{
SqlConnection myCon = null;
try
{
myCon = new SqlConnection(_conn);
myCon.Open();
foreach (int id in validatedReports)
{
SqlDataAdapter myAdap = new SqlDataAdapter("update_DocumentValidated", myCon);
myAdap.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter pId = new SqlParameter("@Id", SqlDbType.Int);
pId.Value = id;
myAdap.SelectCommand.Parameters.Add(pId);
myAdap.SelectCommand.ExecuteNonQuery();
}
}
catch (SystemException ex)
{
_log.Error(ex);
throw;
}
finally
{
if (myCon != null)
{
myCon.Close();
}
}
}
Производительность обновлений в порядке, но я хочу больше.Обновление 1000000 документов на действительные занимает более 1 часа.Есть ли хороший способ ускорить обновления?Я думаю об использовании какой-то партии (например, табличных параметров).Каждое обновление занимает около 5-10 мс при профилировании на SQLServer.