У меня есть настольное приложение с использованием MSSQL CE. Я использую версию CE, потому что позже мне понадобится передача файла в мобильном устройстве.Ускорение запроса SQLite
Используя MSSQL CE, я мог бы передавать данные из файла CSV на свой SDF Databse через 10-15 секунд с 32000 записями.
Проблема заключается в том, что я использую базу данных SDF на своем мобильном устройстве, так как занимает около 24 секунд только для простого заявления SELECT sku,upc,description,price FROM items WHERE upc='111'
.
Я хотел бы попробовать и проверить SQLite, поскольку он легче и, возможно, быстрее, но на первом этапе передайте данные из CSV в SQLite Databse, это заняло очень много времени, через 30 минут передача данных из CSV всего 1000+ записей.
Как мне быстрее выполнять свои запросы?
Мой код MSSQL: `FileReader = New StreamReader (StringFileName)
Do While FileReader.Peek() >= 0
TempReaderString = FileReader.ReadLine
TempArraySplitString = TempReaderString.Split("`")
UpdateAppSqlCommand.CommandText = "INSERT INTO Items(Sku, Upc, Description, Price) VALUES('" & TempArraySplitString(0) & "','" & TempArraySplitString(1) & "','" & TempArraySplitString(2) & "','" & TempArraySplitString(3) & "')"
UpdateAppSqlCommand.ExecuteNonQuery()
Loop
FileReader.Close()`
Мой SQLite Код:
FileReader = New StreamReader(StringFileName)
Do While FileReader.Peek() >= 0
TempReaderString = FileReader.ReadLine
TempArraySplitString = TempReaderString.Split("`")
TempArraySplitString(2) = TempArraySplitString(2).Replace("'", " ")
TempArraySplitString(2) = TempArraySplitString(2).Replace("""", " ")
UpdateAppSqlCommand.CommandText = "INSERT INTO Items(Sku, Upc, Description, Price) VALUES('" & TempArraySplitString(0) & "','" & TempArraySplitString(1) & "','" & TempArraySplitString(2) & "','" & TempArraySplitString(3) & "')"
UpdateAppSqlCommand.ExecuteNonQuery()
Loop
FileReader.Close()
SQLite взял, может быть в 10 раз медленнее, перемещая данные из CSV в базу данных ,
Параметр 'Другой Improvement' значительно повышает скорость, без него, это было около 10 секунд, но с' prepare' она занимает около 3 -4 сек для завершения 32 тыс. Строк. – jaa2013
@Jens почему бы не просто 'InsertCommand.Parameters.add (новый SQLite.SQLiteParameter (« @ Sku », 12341))' – pnizzle
@Jens Очевидно, если я использую описанный выше подход, мне не нужно делать команду подготовки() по команде. Поэтому мой вопрос заключается в том, задает ли ключ параметра и тип данных, а затем делает make() имеет разницу в производительности, просто добавляя параметры в качестве экземпляров 'SQLiteParameter'? – pnizzle