java - 从 Oracle 数据库中的数百万行中选择的最佳方法

标签 java sql oracle select

你好!

我想在一个有 1500 万行的表中查询一百万个不同的词。每次查询后都会处理同义词和单词的结果。

表格看起来像这样:

    synonym      word
    ---------------------
    ancient      old
    anile        old
    centenarian  old
    darkened     old
    distant      far
    remote       far
    calm         gentle
    quite        gentle

这是目前在 Java 中的实现方式:

....
PreparedStatement stmt;
ResultSet wordList;
ResultSet syns;
...

stmt = conn.prepareStatement("select distinct word from table");
wordList = stmt.executeQuery();

while (wordList.next()) {
    stmt = conn.prepareStatement("select synonym from table where word=?");
    stmt.setString(1, wordList.getString(1));
    syns = stmt.executeQuery();

    process(syns, wordList.getString(1));
}
...

这太慢了。做这样的事情最快的方法是什么?

干杯, 克里斯

最佳答案

  1. 确保“单词”列上有索引。

  2. 将第二个 prepareStatement 移到单词循环之外。每次创建新语句时,数据库都会编译和优化查询 - 但在这种情况下查询是相同的,因此这是不必要的。

  3. 将语句合并为 sblundy以上已经完成。

关于java - 从 Oracle 数据库中的数百万行中选择的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/284382/

相关文章:

java - 如何使用 Java Access MS Access 查询(不是普通表)?

mysql - 真实项目,什么时候可以达到bigint maxvalue

java - Gson 和 CSV 冲突?

java - 在JPA中,如何从单个实体类中的多个表中获取

sql - 用同一张表中的另一个值更新列?

java - 如何使用 JDBC/Spring 调用 Oracle 存储过程,其中某些参数类型是用户定义的?

c# - 在 .NET 1.1 中使用数据集更新 oracle

java - JUnit 测试应该重叠吗?

java - 文本到语音转换器

python - 如何显式引用字符串值(Python DB API/Psycopg2)