这是一个基本问题。我继承了一些包含cfquery的代码。它运行在带有MySQL 5.6的CF9上。 cfquery读取:
SELECT some_columns
FROM tablename
WHERE itemname = 'itemnamevar'
AND id > 0
ORDER BY orderby
该表包含20000多个项目。 ID是主键自动增量值。
它在我看来像以前的编码器用于将id > 0
放入查询中以在查询之前添加一些其他子句条件。如果没有使用它们(由某些if / else控制),id > 0
应该导致选择表中的所有数据。
因此代码用作:
SELECT some_columns
FROM tablename
WHERE
<cfif id>
id = '###'
<cfelse>
<cfif LEN(itemname)>
itemname = 'itemnamevar' AND
</cfif>
<cfif LEN(itemgroup)>
itemgroup = 'itemgroupvar' AND
</cfif>
id > 0
</cfif>
我的问题是:如果所有其他子句最小化查询集,在处理id > 0
之前,我可以假设id > 0
对性能没有影响,或者我应该重写要删除的代码那个条件?这需要一些时间,因为有很多查询需要优化。
我需要说运行此代码的网站负载很重(每月超过20万的访问者增长相对较快)。
提前致谢。如果您需要更多信息,请与我们联系。
答案 0 :(得分:1)
使用计算结果为TRUE的表达式而不检查数据。例如:
1 = 1