在我的Java应用程序中,我需要在硬盘上存储一个大表,因为我希望它是持久性的。在数据库中按阵列存储数组
我的第一次尝试是这样的: (我& J可以获得爬上300.000多,所以我有300.000^2双项数组,坠毁我的系统。)
stmt.executeUpdate("DROP TABLE IF EXISTS calculations;");
stmt.executeUpdate("CREATE TABLE calculations (factorA, factorB, result);");
double temp = 0;
for (i = 0; i < datasource.size(); i++) {
for (int j = 0; j < datasource.size(); j++) {
if (i != j) {
temp = calc(datasource.get(i),datasource.get(j));
stmt.execute("INSERT INTO calculations (factorA, factorB, result) VALUES ('"+i+"','"+j+"','"+temp+"')");
}
}
}
现在,这可能会执行得非常慢,可能是因为SQL命令是一个字符串等。
我的新猜测是,它可能更好地首先计算结果,即10.000我的,然后将它们作为一个单元存储到数据库。
但在我尝试实现之前,有没有人有更好的主意?数据库使用不是强制性的,只是一个简单的访问和快速实施。
谢谢!
请确保做你的批量插入作为交易; https://www.sqlite.org/lang_transaction.html - 这会将它们排列在SQLite引擎中,然后当您指出事务已完成时,将快速提交它们,而不是一个一个地执行它们。 –
你需要快速写入还是快速读取?你要提取多少行?因子A +因子B的组成可用作指标吗? – elbuild
其实我需要两个,快速写作和阅读,但在第一次写作。 – goetzmoritz