你好!
我想在一个有 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));
}
...
这太慢了。做这样的事情最快的方法是什么?
干杯, 克里斯
最佳答案
确保“单词”列上有索引。
将第二个 prepareStatement 移到单词循环之外。每次创建新语句时,数据库都会编译和优化查询 - 但在这种情况下查询是相同的,因此这是不必要的。
将语句合并为 sblundy以上已经完成。
关于java - 从 Oracle 数据库中的数百万行中选择的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/284382/