在我的查询中使用for循环。每次执行for循环时,最后必须将一些值插入表中。这很耗时,因为for循环有很多记录。因此,每次执行for循环时都会发生插入。执行for循环后,还有其他方法可以在最后执行插入。
For i in 1..10000 loop ....
--coding
insert into datas.tb values(j,predictednode); -- j and predictednode are variables which will change for every loop
End loop;
不是每次都要插入,而是应该在最后插入。
答案 0 :(得分:1)
如果你展示如何计算变量,可以建立这样的东西:
insert into datas.tb
select
calculate_j_here,
calculate_predicted_node_here
from generate_series(1, 10000)
答案 1 :(得分:0)
一种可能的解决方案是构建一个大的VALUES
字符串。在Java中,类似
StringBuffer buf = new StringBuffer(100000); // big enough?
for ( int i=1; i<=10000; ++i ) {
buf.append("(")
.append(j)
.append(",")
.append(predicted_node)
.append("),"); // whatever j and predict_node are
}
buf.setCharAt(buf.length()-1, ' '); // kill last comma
String query = "INSERT INTO datas.tb VALUES " + buf.toString() + ";"
// send query to DB, just once
事实j
和predict_node
似乎不变,让我有点担心。你为什么要把常数放在100000次?
另一种方法是使用Postgres过程语言进行预测,并让DB本身计算插入值。