目前,我在循環內查詢如下。ColdFusion:查詢VS結構
<cfloop query="Superquery">
<cfquery datasource="mysource" name="getData">
SELECT col1, Col2
FROM myData
where col1 = #Superquery.IDCol#
</cfquery>
<!--- Some Processing --->
</cfloop>
該查詢不會返回太多的數據。在某些情況下,它返回的行少於100行,其中一些行可返回大約5000行。但是由於它在一個循環內,所以迭代次數可以超過100次,這讓我想到了一個更好的優化方法。
方法1:查詢中使用查詢
<cfquery datasource="mysource" name="getAllData">
SELECT col1, Col2
FROM myData
</cfquery>
<cfloop query="Superquery">
<cfquery dbtype="query" name="getData">
SELECT col1, Col2
FROM getAllData
where col1 = #Superquery.IDCol#
</cfquery>
<!--- Some Processing --->
</cfloop>
方法2:使用Structues
循環外,我已經查詢getAllData按照方法1,創建一個鍵爲'col1'且值爲'col2'的結構。在循環內部,我使用在循環外創建的結構來完成必要的處理。
我不確定這兩種方法在性能上是否有所不同。方法1很容易實現。 :)只是想得到一些建議。歡迎任何其他有效的方法。
謝謝!
方法3號很可能是最有效的。那就是你想出一種避免循環的方法。細節取決於許多事情,從superquery開始,getalldata使用相同的數據源。 –
你是否建議我包含一個數據庫表,因爲它使用相同的數據源?對於循環部分,我實際上在循環中設置了一些數組變量,並將其用於稍後的進一步處理。在這種情況下,我無法想到可以避免循環的方法。它取決於什麼細節? –
對於丹的觀點,你會想要一個'加入'或什麼的。方法1只是乞求性能和內存使用問題。 (另外,如果你堅持做一個使用'' –