RDBMS:执行多个操作的最佳方法是什么

时间:2011-12-21 16:09:03

标签: java sql jdbc transactions rdbms

我使用PostgreSQL 8.4,但我认为我的问题可以扩展到大多数RDBMS。

我需要对这些行执行更新或删除等数据更改操作,其中指定的列具有指定集合的​​值。例如,我想删除那些行,其中id在(1,4,7,8)。

整个操作要么成功要么失败,所以我有两个选择:

  • 使用IN语法,例如

DELETE FROM my_table WHERE id IN (1,4,7,8)

  • 使用在一个事务中执行的多个单个操作,例如

DELETE FROM my_table WHERE id = 1;

DELETE FROM my_table WHERE id = 4;

...

作为普通的SQL命令执行时,这两种方法之间有什么区别吗?哪一个更好?

使用JDBC预处理语句进行这些操作时的相同问题?

2 个答案:

答案 0 :(得分:2)

在我看来,你应该总是使用交易。通过多种操作方法,您将在网络上进行更多的往返。使用哪些索引可能会有所不同,因此请查看查询计划。

答案 1 :(得分:0)

所以我检查了EXPLAIN ANALYZE,PostgreSQL在遍历表时使用了IN (...)请求的特殊过滤器。因此,主要区别在于性能:使用IN (...),您可以遍历表格一次。使用N个单独的请求= ?,您将遍历表N次。虽然PostgreSQL应该优化它,所以它实际上更快,但仍然必须慢IN (...)