我正在编写一个软件,要求我准备语句并设置值,执行查询并在循环中获取结果。此循环可能有超过7,000个循环。如果我使用简单语句而不是预处理语句,执行速度会发生很大变化吗?
这是伪代码
感谢。
答案 0 :(得分:8)
如果您重复使用具有多组数据的相同语句,则准备好的语句比非预备语句更快。我不知道这种情况并非如此。
准备好一个语句后,它会被发送到数据库服务器,然后每次调用它时只需要接受数据 - 每次绑定新数据时都不需要重新处理语句。
所以简单的答案是:
没有。他们没有。
答案 1 :(得分:4)
准备好的陈述对于重复性任务来说更快。
http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html:
如果要多次执行Statement对象,通常会缩短执行时间以使用PreparedStatement对象。
答案 2 :(得分:4)
只是出现了一些问题:确保不在循环中创建预处理语句。涉及一些开销,但在第三次查询之后回收自己。实际上,对于大型参数列表,单个查询甚至可能更快。
在某些(或几个大型)交易中运行所有查询的事情会大大加快速度。如果它是大型数据集,则每个事务可能需要1000次查询或类似的事情。 (当然,您的域模型的语义必须允许这样,但根据我的经验,几乎总是如此)。
您可以在单个事务中聚集的查询数量在某种程度上依赖于数据库,因此可能需要进行一些实验和阅读。
答案 3 :(得分:1)
您可能还会考虑为每个语句检索多个值:
SELECT id, value FROM table WHERE id IN (?, ?, ?, ?, ?, ?)
这比单个查询更快。