尋找一些幫助優化下面的查詢。似乎是目前的兩個瓶頸,導致它需要大約90秒才能完成查詢。只有5000個產品,因此它不是一個龐大的數據庫/表格。瓶頸是SQL_CALC_FOUND_ROWS和ORDER BY語句 - 如果我刪除這兩者,則需要大約一秒的時間才能運行查詢。 我試過刪除SQL_CALC_FOUND_ROWS並運行一個count()語句,但這需要很長時間。MySQL查詢優化
是最好的事情將是使用INNER JOIN的(我不太熟悉)根據以下Stackoverflow的帖子? Slow query when using ORDER BY
SELECT SQL_CALC_FOUND_ROWS *
FROM tbl_products
LEFT JOIN tbl_link_products_categories ON lpc_p_id = p_id
LEFT JOIN tbl_link_products_brands ON lpb_p_id = p_id
LEFT JOIN tbl_link_products_authors ON lpa_p_id = p_id
LEFT JOIN tbl_link_products_narrators ON lpn_p_id = p_id
LEFT JOIN tbl_linkfiles ON lf_id = p_id
AND (
lf_table = 'tbl_products'
OR lf_table IS NULL
)
LEFT JOIN tbl_files ON lf_file_id = file_id
AND (
file_nameid = 'p_main_image_'
OR file_nameid IS NULL
)
WHERE p_live = 'y'
ORDER BY p_title_clean ASC, p_title ASC
LIMIT 0 , 10
您是否需要將所有這些連接都留給連接?你是否理解內連接和左連接的區別? – nnichols 2012-03-27 21:14:12
你能告訴我們一些CREATE TABLE語句嗎?你有什麼指數? – Daan 2012-03-27 21:26:22
產品不一定需要類別,品牌,作者,解說員或任何鏈接文件..據我所知,在這種情況下,我需要使用LEFT JOIN。因爲如果我使用INNER JOINS,它不會匹配某些項目上的任何內容? – 2012-03-27 21:28:24