Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
键值数据的SQL插入_Sql_Sqlite_Insert - Fatal编程技术网

键值数据的SQL插入

键值数据的SQL插入,sql,sqlite,insert,Sql,Sqlite,Insert,我有如下数据: x1 y1 z1 x2 y2 z2 val1 val2 val3 val4 大约有1000个(x,y,z)三元组,但是数据集涵盖了几乎所有vs所有的组合,这给了我将近500000行。我正在尝试将它们插入sqlite 我有一个包含x,y,z点的表格和一个包含index1,index2,值的结果表格。我目前的做法是 select index from table POINTS where x1,y1,z1-> i1 select index from table POINTS

我有如下数据:

x1 y1 z1 x2 y2 z2 val1 val2 val3 val4
大约有1000个(x,y,z)三元组,但是数据集涵盖了几乎所有vs所有的组合,这给了我将近500000行。我正在尝试将它们插入sqlite

我有一个包含x,y,z点的表格和一个包含index1,index2,值的结果表格。我目前的做法是

select index from table POINTS where x1,y1,z1-> i1
select index from table POINTS where x2,y2,z2-> i2
insert i1,i2,val1, val2, val3, val4 into table VALS

每行有3条语句,速度非常慢。我可以在一个声明中这样做吗?我还想使用preparedStatement(),因为我是通过JDBC连接到sqlite的

INSERT INTO vals (i1, i2, v1, v2, v3, v4) VALUES
((SELECT index FROM points WHERE x = ? AND y = ? and z = ?),
 (SELECT index FROM points WHERE x = ? AND y = ? and z = ?),
 ?, ?, ?, ?)

如果您只做一次插入,这可能是微优化

如果定期这样做,您可以为每个查询部分使用准备好的语句


请注意,加快select语句速度的最重要因素是使用的索引。在POINTS表的所有条目上添加唯一索引将加快速度。

是的,我正在使用任何sqlite表中内置的>rowid<,我不是要使用主键,我是要为所有列创建一个唯一索引创建唯一索引all_idx on(x1,y1,z1,i1)。我刚刚有机会尝试一下,是的,这非常有效!谢谢,这正是我需要的