在我的数据库中包含大约 200 万行。每行包含句子的集合(非英语)。
![Image of database][1]
例如,如果用户给出“abcd”,则与第 1,3 行都匹配。因此两者都应选择。 由于数据检索花费了大量时间。我正在使用以下代码来检索数据。如果任何给定的单词与数据库匹配,则应选择这些行。
sb.append("SELECT Sentence FROM corpus Where ");
for(int k=0;k<wordList.size();k++){
sb.append( " Sentence like '%" + wordList.get(k) + "%' OR ");
}
sb.append(" 1=0");
rs2 = dbc.sqlExecute(sb.toString());
该选择词可以在行中的任何位置。那可能是前面或中间或结尾。我的问题是当用户给出一些单词短语时,选择匹配行需要花费大量时间。有什么合适的方法可以加快我的数据库检索速度吗?我认为索引可能不起作用,因为我不是只搜索行的起点。匹配的词可能包含行中的任何位置。这样做的有效方法是什么?检索花费了大量时间。对我来说是个大问题。有谁知道正确的方法吗?
最佳答案
你不需要for循环,只需要这样做:
sb.append("SELECT Sentence FROM corpus Where Sentence like '%");
sb.append(wordList);
sb.append("%'");
关于mysql - 从数据库中检索(选择)数据的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212249/