我继承了运行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秒。
问题:
使用不同类型的语法可以更快地完成此操作吗?
感谢您的帮助!
答案 0 :(得分:2)
为什么不对列进行索引,以获得更好的性能 创建索引语法:
在preislisten上创建索引idx_ean(ean)