1

我正在使用 mysql [InnoDB engine]索引但是查询响应仍然很慢(响应时间高):

我在这里研究了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");

在萤火虫中,响应时间约为 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

这就是萤火虫所说的。

在此处输入图像描述

请指导我做错了什么。

4

1 回答 1

3

在大表上创建索引是一项昂贵的操作。在大多数情况下,索引会保留下来。创建一个,执行一个查询并删除它 - 不会帮助速度。尝试创建索引,离开它并再次查询:)

于 2012-08-04T16:13:09.517 回答