我見過很多像我這樣的問題,但是在閱讀完所有問題之後,我感到很困惑。提高MySQL查詢性能 - 可能的索引問題
總結 - 我有一個查詢從表中選擇產品,並從其他表中添加更多關於它們的信息。
查詢:
SELECT
p.product_id,
p.product_name,
p.product_seo_url,
p.product_second_name,
p.product_intro_plain,
p.product_price,
p.product_price_promo,
p.product_promo_expire_date,
p.product_views,
p.product_code,
p.product_exquisite,
p.product_rating,
p.product_votes,
p.product_date_added,
p.product_returned,
p.product_price_returned,
(SELECT gal.image_filelocation
FROM 3w_products_gallery gal
WHERE gal.product_id = p.product_id
ORDER BY show_order ASC
LIMIT 1) image_filelocation,
m.man_image_location,
m.man_name,
m.man_seo_url
FROM
3w_products p
LEFT JOIN 3w_manufacturers m
ON p.man_id = m.man_id
LEFT JOIN 3w_products_cat_rel pcr
ON p.product_id = pcr.product_id
WHERE
pcr.ctg_id = '19'
AND p.man_id = '190'
ORDER BY
p.product_id DESC
LIMIT
0, 24
碰巧是查詢有時執行的0.001秒的奇怪的事情。有時候持續30多秒。
有什麼EXPLAIN顯示: http://i.stack.imgur.com/ZNtBX.png
我認爲問題出在表的索引。你能告訴我如何設置它們嗎?
讓我知道你是否需要任何有關表或任何其他信息!
最佳, 貝爾巴托夫
你知道 「WHERE(pcr.ctg_id = '19')」,使得PCR外加入以執行內部連接? (如果您確實需要左連接,請將條件移至左連接的ON子句。) – jarlh 2015-02-09 10:50:56
您錯過了'ASC LIMIT 1'附近的逗號 image_filelocation,'括號內的查詢結束後,您應該有一個逗號 – Gunaseelan 2015-02-09 10:51:39
這兩者之間應該有「as」。 – 2015-02-09 10:59:49