Php Prestashop解决方案中的SQL查询优化

Php Prestashop解决方案中的SQL查询优化,php,sql,optimization,prestashop,Php,Sql,Optimization,Prestashop,我正在使用Prestashop解决方案开发分层导航模块, 我试图优化一个Sql查询,它创建一个tmp表来执行它,并通过这种方式在mysql中创建一个瓶颈 以下是查询: SELECT p.*, p.id_category_default, pl.available_later, pl.description_short, pl.link_rewrite, pl.name, i.id_image, il.legend, m.name manufacturer_name, DATEDIFF(p.`da

我正在使用Prestashop解决方案开发分层导航模块, 我试图优化一个Sql查询,它创建一个tmp表来执行它,并通过这种方式在mysql中创建一个瓶颈

以下是查询:

SELECT p.*, p.id_category_default, pl.available_later, pl.description_short, pl.link_rewrite, pl.name, i.id_image, il.legend, m.name manufacturer_name, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL 30 DAY)) > 0 AS new 
FROM `ps_category_product` cp 
LEFT JOIN ps_category c ON (c.id_category = cp.id_category) 
LEFT JOIN `ps_product` p ON p.`id_product` = cp.`id_product` 
LEFT JOIN ps_product_lang pl ON (pl.id_product = p.id_product) 
LEFT JOIN ps_image i ON (i.id_product = p.id_product AND i.cover = 1) 
LEFT JOIN ps_image_lang il ON (i.id_image = il.id_image AND il.id_lang = 2) 
LEFT JOIN ps_manufacturer m ON (m.id_manufacturer = p.id_manufacturer) 
WHERE p.`active` = 1 AND c.nleft >= 2 AND c.nright <= 29 AND c.active = 1 AND pl.id_lang = 2 
AND p.id_product IN (74,78,130,146,168,169,178,195,...,297,302,1986,1987,1988,1993,1999,2000,2001) 
GROUP BY p.id_product ORDER BY p.date_upd desc LIMIT 0,48
SELECT p.*、p.id\u category\u default、pl.available\u later、pl.description\u short、pl.link\u rewrite、pl.name、i.id\u image、il.legend、m.name manufacturer\u name、DATEDIFF(p.`date\u add`、date\u SUB(NOW(),INTERVAL 30 DAY))>0作为新项
来自'ps\类别\产品'cp
左连接ps\U类别c ON(c.id\U类别=cp.id\U类别)
左连接'ps\u product`p ON p.'id\u product`=cp.'id\u product`
左连接ps\U product\U lang pl ON(pl.id\U product=p.id\U product)
左连接ps_图像i打开(i.id_product=p.id_product和i.cover=1)
左连接ps_image_lang il ON(i.id_image=il.id_image和il.id_lang=2)
左连接ps_制造商m ON(m.id_制造商=p.id_制造商)

其中p.`active`=1和c.nleft>=2以及c.nright Mybe在需要时在何处提供更多信息会更好。因为如果工作负载是一个问题,并且您没有找到更好的解决方案,那么最好将其作为一个夜间作业来完成。如果没有GROUPBY子句,它是否运行良好?尝试删除该子句并进行解释,以确保它不会使用临时表。Mybe在需要时在何处提供更多信息会很好。因为如果工作负载是一个问题,并且您没有找到更好的解决方案,那么最好将其作为一个夜间作业来完成。如果没有GROUPBY子句,它是否运行良好?尝试删除该子句并进行解释,以确保它不会使用临时表。