我正在修改我前几天的问题。重写了我的查询。重访MySQL多重匹配查询....需要这么长时间
有人能告诉我为什么在多个表上运行任何类型的查询需要很长时间使用我将在下面发布的查询?
有没有人有时间来帮我解决这个问题?我可以支付200美元我认为这对于两个小时的工作是很好的。我会在这里回复这个答案,这会让每个人都受益。
查询基本上是这样的:
SELECT bb_business.business_name, bb_business.id AS bid FROM bb_business
LEFT JOIN bb_offers ON bb_business.id = bb_offers.store_id
LEFT JOIN bb_cat_business ON bb_business.id = bb_cat_business.store_id
LEFT JOIN bb_categories ON bb_categories.id = bb_cat_business.cat_id
WHERE bb_business.active = '1'
AND MATCH(bb_business.business_name) AGAINST ('zebra')
OR MATCH(bb_categories.category_name) AGAINST ('zebra')
OR MATCH (bb_business.city,bb_business.state,bb_business.zip) AGAINST ('zebra')
GROUP BY bb_business.business_name
ORDER BY bb_business.business_name DESC
LIMIT 1,10
即查询需要50秒执行第一时间。第二次如预期的那样快速。
如果我改变该查询只使用一个匹配,它是快速的。只要我添加第二个MATCH或LIKE语句,它就会重新执行40-60次执行时间。
运行,准确的查询执行时间为:MySQL returned an empty result set (i.e. zero rows). (Query took 47.7614 sec)
解释返回此:
1 SIMPLE bb_business ALL NULL NULL NULL NULL 2877 Using temporary; Using filesort
1 SIMPLE bb_offers ALL NULL NULL NULL NULL 94
1 SIMPLE bb_cat_business ALL NULL NULL NULL NULL 5697
1 SIMPLE bb_categories eq_ref PRIMARY PRIMARY 8 buxback_site.bb_cat_business.cat_id 1 Using where
当仅使用一个比赛,该查询使用全文索引我有bb_business。当我有多个匹配时,它似乎没有使用任何索引。
这里有指标上bb_business:
PRIMARY PRIMARY 2877 id
store_id UNIQUE 2877 store_id
index_business_name INDEX 2877 business_name
business_name FULLTEXT 1 business_name
city FULLTEXT 1 city
state
zip
这里是bb_categories指标:
PRIMARY PRIMARY 15 id
category_name UNIQUE None category_name
category_name_2 FULLTEXT None category_name
我绝望!
谢谢!
如果你想联系我直接发送到senica在allebrum.com – 2010-08-19 14:20:36