sstas
@sstas

Как ускорить запись массива в БД sqlite на unity?

Здравствуйте, стоит задача заполнить БД данными из массива, в массиве 30.000+ элементов, и занимает это дольше 7ми минут, для замера, на зацикленные 50к запросов, уходит 5:15мин, и это на ПК(целевая платформа - андроид), в общем это норма или я что-то делаю не так?

public static void ExecuteQueryWithoutAnswer(string query)
	{
		OpenConnection();
		Debug.Log("001");
		for (int i = 0; i < 50000; i++)
		{
			query = "insert into Main (Name, LongCode, ShortCode, Price) values (1,1,1,1)";
		}
		command.CommandText = query;
		command.ExecuteNonQuery();

		}
		Debug.Log("002");
		CloseConnection();
	}


P.S. добавил цикл в следующую конструкцию, сейчас БД заполняется за пару секунд
using(SqliteTransaction transaction = connection.BeginTransaction())
{

}
  • Вопрос задан
  • 150 просмотров
Решения вопроса 2
HemulGM
@HemulGM
Delphi Developer, сис. админ
Делать один запрос, а не 50 тыщ.
Компонуй запросы в один через точку с запятой.
Хотя бы по 100 строк.
Перед выполнением запросов начинай транзакцию
После - завершай
Ответ написан
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Вставляйте блоками к примеру по 100 элементов (размер блока подберете экспериментально):
insert into Main (Name, LongCode, ShortCode, Price) values 
(1,1,1,1),
(2,2,2,2),
-- --------
(100,100,100,100);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы