jQuery自动完成-使用联接查询数据库

jQuery自动完成-使用联接查询数据库,jquery,mysql,jquery-ui,autocomplete,Jquery,Mysql,Jquery Ui,Autocomplete,我正在文本框上实现jQuery自动完成库。我在后端的SQL查询使用联接: SELECT DISTINCT wcc.ItemCode, gwbo.ItemName FROM TBL1 gwbo INNER JOIN TBL2 wcc ON gwbo.ItemCode = wcc.ItemCode WHERE wcc.ItemCode LIKE '$term%' OR gwbo.ItemName LIKE '%$term%' AND wcc.CountStatus != 2 ORDER BY

我正在文本框上实现jQuery自动完成库。我在后端的SQL查询使用联接:

SELECT DISTINCT wcc.ItemCode, gwbo.ItemName FROM TBL1 gwbo 
INNER JOIN TBL2 wcc ON gwbo.ItemCode = wcc.ItemCode 
WHERE wcc.ItemCode LIKE '$term%' OR gwbo.ItemName LIKE '%$term%' 
AND wcc.CountStatus != 2 ORDER BY wcc.ItemCode LIMIT 0, 10
这大约需要25秒来填充和显示自动完成框。。然而,当我删除连接并仅查询1表时,自动完成几乎立即显示(当然数据不准确)。为什么我的加入会大大减缓速度?我需要加入。。有没有一种方法可以加快我所缺少的速度,或者我需要一个全新的实现?

在MySQL中运行,看看为什么加入
需要这么长时间,以及可以设置哪些索引来加快速度

EXPLAIN SELECT DISTINCT wcc.ItemCode, gwbo.ItemName FROM TBL1 gwbo 
INNER JOIN TBL2 wcc ON gwbo.ItemCode = wcc.ItemCode 
WHERE wcc.ItemCode LIKE '$term%' OR gwbo.ItemName LIKE '%$term%' 
AND wcc.CountStatus != 2 ORDER BY wcc.ItemCode LIMIT 0, 10
似乎在
ItemCode
上设置索引可以加快查询速度。我建议添加它,然后再次运行
EXPLAIN
,查看数据库是否正在使用新创建的索引


此外,
类似于
的情况往往非常缓慢,因为无论您在该列上设置了什么索引,数据库都必须进行完整的表扫描。看看你能不能改变这一点。它可以是
==
而不是像
那样的
吗?

很酷,我会检查一下,然后再给你回复。我需要
LIKE
来完成用户的输入,例如
Mor
输入需要匹配
Moretti
哦,我的。。正在使用索引..而且..它工作得更快:)谢谢