ここでも同じ問題が発生しています。すべてのリクエストの最初のクエリは、次のクエリよりも大幅に時間がかかります。
状況を説明するために、SQLServerに2つのテーブルを作成しました。tableAとtableBの両方のテーブルは同一です。一方はもう一方のコピーです。
これを実行すると:
<cfquery datasource="test" name="queryA"><!--- This query takes 104 milliseconds --->
SELECT * FROM tableA WHERE id = 1
</cfquery>
<cfquery datasource="test" name="queryB"><!--- This query takes 3 milliseconds --->
SELECT * FROM tableB WHERE id = 1
</cfquery>
ただし、クエリの順序を元に戻すと、遅いクエリが最初のクエリになります。
<cfquery datasource="test" name="queryB"><!--- This query takes 104 milliseconds --->
SELECT * FROM tableB WHERE id = 1
</cfquery>
<cfquery datasource="test" name="queryA"><!--- This query takes 3 milliseconds --->
SELECT * FROM tableA WHERE id = 1
</cfquery>
ご覧のとおり、違いは重要です。
クエリは非常に単純で、主キーを使用して、10レコードを超えないテーブルに対してクエリを実行します。
ここにはColdFusion10がありますが、ColdFusion9とMSSQLServer2008でも発生しています。