0

我有一些代码正在努力提高效率。

我正在运行一个查询,然后遍历这些结果并运行其他查询以进一步深入了解我的数据。代码需要很长时间来处理,我确信它没有尽可能高效,我相信对查询进行查询会更有效,但我不确定如何准确地实现它。

这是我当前的代码

我的第一个查询:

<!--- 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 解决这个问题?

-布赖恩

4

1 回答 1

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>

没有必要给它一个名字,因为它没有返回任何数据

于 2018-05-09T15:00:07.877 回答