0

私は約 500000 レコードのテーブルを持っています。私がやりたいことは、制限を使用して LIKE ワイルドカードを使用して選択クエリを配置することだけです。何をしても、結果を表示するのに十分な時間がかかります。それは私にとって何の価値もありません。私のクエリは以下です

クエリ

 if (isset($_GET['res'])) {
   $value = $_GET['res'];
   $val = explode(" ", $value);
      $query = "SELECT productid, productname, retailprice, lmnr, suplier 
                FROM comp where productname = '$value' ";
      $count = count($val);
      for ($i = 0; $i < $count; $i++) {
          $query .= " union Select productid, productname, retailprice, lmnr, suplier
                 from comp where productname like '%" . $val[$i] . "%' ";
      }
             $query .=" GROUP BY productid, productname, retailprice, lmnr, suplier LIMIT  $start, $limit";
 }
 $result_query = $db->query($query);

どんな助けでも大歓迎です、ありがとう

: 検索目的で使用されるため、このクエリをユニオンに分割しました。スペースで区切られた文字列のすべての可能な一致、つまり A TEST QUERY からクエリ検索を行いたいと考えています。'%A%'、'%TEST%'、'%QUERY%' として解釈されます。

4

2 に答える 2

0

productname 列に索引を付けます。キーワード用に別の列を用意することは悪い考えではありません。そのため、キーワードを含む小さい方の列にキーワードが含まれている場合は常に、データベース サーバーは長いテキストでキーワードを検索する必要がありません。

于 2013-10-11T18:21:33.983 に答える