SELECT
pvl.name_parametre_value_parametre_value_lang,
pv.id_parametre_value,
ic.id_combinaison,
ic.prix_combinaison,
ic.poid_combinaison,
ic.actif_combinaison,
ic.actif_genere,
pv.actif_value,
pipv.id_parametre_value as pipv_id_parametre_value
FROM
ps_imp_combinaison_parametre_value_6 cpv
LEFT JOIN ps_imp_combinaison_6 ic ON ic.id_combinaison = cpv.id_combinaison
LEFT JOIN ps_imp_parametre_value pv ON pv.id_parametre_value = cpv.id_parametre_value
LEFT JOIN ps_imp_parametre_value_lang pvl ON pvl.id_parametre_value = pv.id_parametre_value
LEFT JOIN ps_imp_parametre p ON p.id_parametre = pv.id_parametre
LEFT JOIN ps_imp_product_impression_parametre_value pipv ON pipv.id_parametre_value = pv.id_parametre_value and pipv.id_product_impression = 63
WHERE
p.id_nom_domaine = 6
AND
pvl.id_lang_domaine = 18
AND
ic.id_product_impression = 63
GROUP BY
ic.id_combinaison,
cpv.id_parametre_value
ORDER BY
ic.id_combinaison,
p.id_parametre
LIMIT
0, 50
以下查询花费了太多时间(超过4分钟)。有没有办法让它更快?
ps_imp_combinaison有97290个lignes ps_imp_combinaison_parametre_value有705595个lignes
答案 0 :(得分:1)
您的查询包含大量连接,这将总是增加提取信息所需的时间。没有简单的方法来加速你拥有的东西,因为你已经对总结果应用了限制,并且这个限制似乎不容易在之前应用。
减少时间的最佳潜力是查看你所拉动的逻辑,看看你是否可以减少连接数。除此之外,看看你是否可以在加入像这样的子查询之前应用限制:
SELECT * FROM
(SELECT * FROM table_1 LIMIT 50) as subq
LEFT JOIN ...
这可能有助于降低后续连接的复杂性。
答案 1 :(得分:0)
您是否定义了indexes?您肯定需要ps_imp_combinaison
表列id_combinaison
和ps_imp_combinaison_parametre_value
表列id_combinaison
上的索引,因为这是您可能最大的表的主要连接条件。
然后标准列上的其他索引可能会有所帮助。请记住,有一个指数的权衡;索引越多,插入/更新/删除时间越长,但它们可能使4分钟查询成为4秒查询。
答案 2 :(得分:0)
SELECT
pvl.name_parametre_value_parametre_value_lang,
pv.id_parametre_value,
pipv.id_parametre_value as pipv_id_parametre_value
FROM
ps_imp_combinaison_parametre_value_6 cpv
LEFT JOIN ps_imp_combinaison_6 ic ON ic.id_combinaison = cpv.id_combinaison
LEFT JOIN ps_imp_parametre_value pv ON pv.id_parametre_value = cpv.id_parametre_value
LEFT JOIN ps_imp_parametre_value_lang pvl ON pvl.id_parametre_value = pv.id_parametre_value
LEFT JOIN ps_imp_parametre p ON p.id_parametre = pv.id_parametre
LEFT JOIN ps_imp_product_impression_parametre_value pipv ON pipv.id_parametre_value = pv.id_parametre_value and pipv.id_product_impression = 63
WHERE
p.id_nom_domaine = 6
AND
pvl.id_lang_domaine = 18
AND
ic.id_product_impression = 63
GROUP BY
ic.id_combinaison,
cpv.id_parametre_value
ORDER BY
ic.id_combinaison,
p.id_parametre
LIMIT
0, 50