在我的数据库中包含大约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/

10-12 14:29
查看更多