如何在MySQL中增加我的Left Join查询性能?

时间:2012-07-11 08:53:07

标签: mysql performance select left-join

我继承了运行Coldfusion8和MySQL 5.0.88的网站。

我有两张表 - 文章( A ),其中包含产品信息,以及价格表( P ),其中包含卖家价格表。

产品在产品表中是唯一的,但在价目表中可能包含多个条目(取决于价格表的数量)。

在我的产品搜索中,我需要从 A 获取产品信息,如果卖家为用户分配了价目表,我还需要从 p

在进行实际产品查询之前,我正在预编译所有卖家ID和价格表名称,如下所示:

SELECT count(A.id) AS total
    FROM arts A

    <cfif variables.use_pricelists neq "">  
    LEFT JOIN preislisten p ON
            A.ean = P.ean
        AND A.sellerID = p.sellerID
        AND (
            // precompiled list - hardcoded loop
            ( P.list_name = "-Standard-" AND P.sellerID = "2222222222222" )
            OR
            ( P.list_name = "I" AND P.sellerID = "3333333333333" )
            )
    </cfif>
    WHERE
    ...

虽然这有效但它需要永远。如果不检查价格表,我可以在不到1秒的时间内完成搜索。如果需要检查价格表,则需要7-10秒。

问题
使用不同类型的语法可以更快地完成此操作吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

为什么不对列进行索引,以获得更好的性能 创建索引语法:

在preislisten上创建索引idx_ean(ean)