寻找一些帮助优化下面的查询。似乎是目前的两个瓶颈,导致它需要大约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