0

使用 java.Presently 我正在使用以下代码片段从 postgres db 表中删除数千行的最快方法:

query = "DELETE FROM NODE WHERE SEQUENCE_NO = " + sequenceNo;
            insertOrDelete(query);




insertOrDelete(String query){
    statement = createStatement();
    numRowUpdated = statement.executeUpdate(query);
    closeStatement(statement);
            }
4

3 回答 3

2

这不是 Java 问题 - 它是数据库。

确保 SEQUENCE_NO 上有一个索引。除此之外,询问数据库专家(取决于数据库,可能会有一些可以提高性能的东西,但最终都归结为数据库管理:为 SEQUENCE_NO 选择正确的数据类型,保持元数据最新等。 )。

您可能应该在您的问题中添加一个 SQL 标记。

于 2012-08-22T06:25:22.337 回答
1

您可能要考虑建立一个声明,如

DELETE FROM NODE WHERE SEQUENCE_NO In (...);

这将在一次提交中完成您的工作,而不是多次提交,这在任何情况下都会表现得更好。

于 2012-08-23T17:29:28.197 回答
1

如果您已经在使用单个查询,那么无论是 Java 还是其他任何东西,我认为它都不会变得更快。

一些技巧 :

  • 使用 PreparedStatement。它可能会稍微快一点,并且会更清洁/更安全/更好
  • 在 finally 中关闭语句
于 2012-08-22T05:13:46.613 回答