在我的数据库中包含大约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());
该选择词可以在行中的任何位置。那可能是前面,中间或结尾。我的问题是,当用户输入一些词组时,选择匹配的行会花费大量时间。有什么适当的方法可以加快我的数据库检索速度吗?我认为索引可能不起作用,因为我不是仅搜索行的起点。匹配的单词可能包含行中的任何位置。有效的方法是什么?检索需要花费大量时间。对我来说是个大问题。有人知道这样做的正确方法吗?
最佳答案
您不需要循环,只需执行以下操作:
sb.append("SELECT Sentence FROM corpus Where Sentence like '%");
sb.append(wordList);
sb.append("%'");
关于mysql - 从数据库检索(选择)数据的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27212249/