我使用的是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秒。
项目表
----------------------------------
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所说的。
请指导我做错了什么。
答案 0 :(得分:3)
在大型表上创建索引是一项昂贵的操作。在大多数情况下,索引仍然存在。创建一个,执行查询并删除它 - 将无助于提高速度。尝试创建索引,保留并再次查询:)