0

我继承了一个运行 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 秒。

问题
这可以用不同类型的语法更快地完成吗?

感谢帮助!

4

1 回答 1

2

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

在 preislisten (ean) 上创建索引 idx_ean

于 2012-07-11T08:57:31.373 回答