MySQL:使用INDEX但仍然很慢

时间:2012-08-04 15:57:14

标签: mysql

我使用的是mysql [InnoDB引擎] 索引,但查询响应仍然很慢(响应时间很长):

我在这里研究了Full Text Search In 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秒。

enter image description here

项目表

----------------------------------
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所说的。

enter image description here

请指导我做错了什么。

1 个答案:

答案 0 :(得分:3)

在大型表上创建索引是一项昂贵的操作。在大多数情况下,索引仍然存在。创建一个,执行查询并删除它 - 将无助于提高速度。尝试创建索引,保留并再次查询:)