我有一些代码,我试图提高效率。
我正在运行查询,然后循环查看这些结果并运行其他查询以进一步深入查看我的数据。代码需要很长时间才能处理,我确信它的效率不高,我相信查询查询效率更高,但我不确定如何实现那。
这是我当前的代码
我的第一个问题:
<!--- Get equipment Query --->
<cfquery name="get_equipment" datasource="#datasource#">
select *
from equipment_maintenance
where machine_type != 'unifi_site' AND machine_type != 'firewall' AND machine_type != 'dvr' AND machine_type != 'pbx' AND active = 'yes'
ORDER by #querySortType#
</cfquery>
然后我输出我的查询并运行其他查询:
<cfoutput query="get_equipment">
<!--- Get In-Progress Maintenance History --->
<cfquery name="get_in_progress_history" datasource="#datasource#">
select *
from service_ticket
where equipment_id=#id#
</cfquery>
OUTPUT SOME DATA
<!--- Update due date in the database for this machine --->
<cfquery name="dueDate#id#" datasource="#datasource#">
update equipment_maintenance
set maintenance_due_date = #dueDate#
where id = #id#
</cfquery>
OUTPUT SOME DATA
<cfquery name="get_history" datasource="#datasource#">
select *
from equipment_service_history
where equipment_id = #id#
</cfquery>
<cfquery name="get_history_ticket_detail" datasource="#datasource#">
select *
from closed_tickets
where equipment_id = #id#
order by ticket_id DESC
</cfquery>
OUTPUT SOME DATA
<cfloop query="get_history_ticket_detail">
OUTPUT SOME DATA
</cfloop>
</cfoutput>
中间有很多HTML代码用于输出我的数据,但这是我的Coldfusion代码的基本结构。
我假设我的CFOUTPUT标签中的多个查询是导致性能问题正确的原因?如何使用QoQ修复?
-Brian
答案 0 :(得分:1)
这是一件容易的事情。将更新语句更改为
<cfquery datasource="#datasource#">
update equipment_maintenance
set maintenance_due_date = #dueDate#
where machine_type != 'unifi_site' AND machine_type != 'firewall' AND machine_type != 'dvr' AND machine_type != 'pbx' AND active = 'yes'
</cfquery>
没有必要给它起一个名字,因为它没有返回任何数据