2015-12-28 2 views
0

Я работал над C# Compact Framework 4.0 для моего продукта.Самый толстый способ вставки данных в Sql Server CE

У меня есть сервер и мобильный телефон, и мне нужно синхронизировать все данные с сервера на моем мобильном устройстве.

Обычно около 6000 записей будут вставлены в мое мобильное устройство на одном столе.

Теперь я использую таблицу напрямую с именем индекса указанной таблицы.

Это занимает около 55 секунд для 6000 записей.

Есть ли более быстрый способ вставить?

SqlCeCommand cmdItem = conn.CreateCommand(); 
SqlCeResultSet rsItem; 
cmdItem.CommandText = "item_info"; 
cmdItem.IndexName = "PK_item_info"; 
cmdItem.CommandType = CommandType.TableDirect; 
rsItem = cmdItem.ExecuteResultSet(ResultSetOptions.Updatable | ResultSetOptions.Scrollable); 
while(reader.read()){ 

    SqlCeUpdatableRecord recItem = rsItem.CreateRecord(); 
    recItem.SetString(1, cmdItem.SerialNo); 
    recItem.SetInt32(10, 0); 
    rsItem.Insert(recItem); 

} 
+0

Может быть, было бы лучше, если бы вы поделились текущий код –

+0

Ну, трудно сказать, не видя кода, но сохраняя открытым соединение и указать тип данных в явном виде при добавлении параметров в вашем SQL команды два вещи, которые могут влиять на скорость. В противном случае, это мобильное устройство и мобильный сервер SQL Server. Не ожидайте, что чудеса произойдут с точки зрения скорости. –

+0

Обновлен код – user3383301

ответ

1

Удалить "| ResultSetOptions.Scrollable"

И переместить линию:

SqlCeUpdatableRecord recItem = rsItem.CreateRecord(); 

Над цикла.

var cmdItem = conn.CreateCommand(); 
cmdItem.CommandText = "item_info"; 
cmdItem.CommandType = CommandType.TableDirect; 
var rsItem = cmdItem.ExecuteResultSet(ResultSetOptions.Updatable); 
var recItem = rsItem.CreateRecord(); 
while(reader.read()) 
{   
    recItem.SetString(1, cmdItem.SerialNo); 
    recItem.SetInt32(10, 0); 
    rsItem.Insert(recItem); 
} 
+0

Как насчет indexName ?? WIll с использованием увеличения имени индекса? – user3383301

+0

Нет, он вообще не используется (имя индекса используется при использовании Seek и SetRange) – ErikEJ

+0

Я получаю скорость 109 строк в секунду. До получения около 95 рядов в секунду. Любые другие методологии? Мне было бы здорово, если бы я получил около 130 рядов в секунду. – user3383301

Смежные вопросы