jQuery AutoComplete - 使用JOIN查询数据库

时间:2013-05-02 20:23:32

标签: jquery mysql jquery-ui autocomplete

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

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秒才能让自动填充框填充并显示..但是,当我删除JOIN并只查询1表时,自动完成几乎立即显示(当然数据不准确)。为什么我的加入如此急剧减缓?我需要加入..有没有办法加快我的速度,或者我需要一个全新的实现?

1 个答案:

答案 0 :(得分:1)

在MySQL中运行EXPLAIN以了解JOIN花费这么长时间的原因,以及您可以设置哪些索引来加快速度。

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条件往往非常慢,因为无论您在该列上设置什么索引,db都必须执行全表扫描。看看你是否能以某种方式改变它。它可以是==而不是LIKE吗?