[英]Key press autocomplete queries to a 3 million rows table
我有一个表fs_city
,具有世界各地300万个城市,以及一个表fs_country
。
当用户访问它检测到其国家代码的网站时,如果用户来自美国,则要求用户从框中选择其国家和城市(在fs_city
上查找fs_city
城市),如果用户输入“ Ne”,他将通过“纽约”获得一个下拉列表,例如,我这样做是为了创建自动完成输入。
问题是,查询是在每次按键时发送的,在我的示例“ Ne”中,对表fs_city
有两个查询。
另外,即使只有一个查询,它也需要6秒钟才能从该表返回响应...我的表具有主键。
这是我的SQL查询:
SELECT
ci.city_id,
ci.country_code,
ci.city,
ci.region,
co.country_name
FROM
fs_city as ci,
fs_country as co
WHERE
ci.city LIKE "Ne%"
AND co.country = ci.country_code
AND ci.country_code = :country
ORDER BY
ci.city ASC
LIMIT 0,20
如何创建自动完成功能(带按键),以及如何加快fs_city
表查询?
更新 :
fs_city主键:city_id
fs_country主键:country_id
引擎:InnoDB
jQuery具有与您要查找的东西完全一样的漂亮小部件,并且我敢肯定您可以限制它,使其仅在设置一定数量的字符后才开始查询数据库,以便您可以限制结果。 那应该解决您的速度问题并且缩短您的javascript。 http://jqueryui.com/autocomplete/
EDIT MySQL还有一个LIMIT项来限制返回值,这也可能有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.