我正在修改我前幾天的問題。重寫了我的查詢。重訪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