我在 InnoDB 表中有一个包含 43,000 个英国位置的列表,我用它来通过远程 json 调用填充 Jquery 自动完成框。
目前我只是执行一个基本的 SELECT * FROM locations WHERE title LIKE 'lond%' 查询来检索请求,但即使这个站点仍在开发中,结果也很慢。
我已经在按键之间延迟了 200 毫秒,并且在开始收集结果之前至少有 4 个字符,但我可能需要重新考虑这一点,因为英国有一些 3 个字符的位置,我非常希望它显示结果立即地。
一个明显的改进是全文索引“标题”,但由于数据库的其余部分是 InnoDB,我宁愿不倒退并将表转换为 MyISAM。因此,我剩下了另外两个工具,即 Sphinx 和 Memcached。
Sphinx - 据我所知,Sphinx 只返回匹配结果的 ID,所以我仍然需要使用触发查找的每个用户按键来查询 MySQL。因此,我不确定它会有多大的改进?
Memcached - 我曾考虑将所有 43,000 个结果加载到内存中,然后执行某种数组搜索(或者如果有 memcache 内置搜索?)。但这感觉有点白痴?还是我只是想多了?
我真的很感激一些关于最佳路线的反馈......