1

mysql [InnoDB エンジン]インデックスを使用していますが、クエリの応答は依然として非常に遅いです (応答時間が長い):

ここで勉強したMySqlでの全文検索

Mysql のデフォルトの innoDB ストレージ エンジン テーブルには実装できません。

ユーザーが都市名を入力すると、クエリがCity, Country名前の形式を取得する自動提案を作成しました。

$search = $_GET['term'];
mysql_query("CREATE INDEX index_plc ON projects(pro_loc_city)");
$result = mysql_query("SELECT CONCAT_WS(', ', p.pro_loc_city, c.country_name) 
                       as location FROM projects p
                   LEFT JOIN countries c ON c.country_id = p.country_id 
                   WHERE p.pro_loc_city LIKE '%$search%' 
                   GROUP BY p.country_id") or die('Something went wrong');
mysql_query("DROP INDEX index_plc ON projects");

firebug では、応答時間は約 5 ~ 3 秒です。

ここに画像の説明を入力

プロジェクト表

----------------------------------
pro_id | pro_loc_city | country_id
----------------------------------
   1     Karachi          50
   2     Lahore           60
   3     Karachi          50
   4     Abc              70
   5     Karachi          50

-------------------------
country_id | country_name
-------------------------
   50         Pakistan
   60         A Country
   70         B Country

これは Firebug が言っていることです。

ここに画像の説明を入力

私が間違っていることを教えてください。

4

1 に答える 1

3

大きなテーブルにインデックスを作成するのは、コストのかかる操作です。ほとんどの場合、インデックスは残ります。クエリを作成し、クエリを実行してドロップしても、速度は向上しません。インデックスを作成して、そのままにして、もう一度クエリを実行してみてください:)

于 2012-08-04T16:13:09.517 に答える