5

次の点を考慮してください。

<cfquery name="aQuery" datasource="#aSource#">
    SELECT aColumn
      FROM aTable
     WHERE bColumn = <cfqueryparam value="#aVariable#" cfsqltype="#aSqlType#" />
       AND cColumn = 'someConstant'
       AND dColumn is null
</cfquery>

私が変われば

AND cColumn = 'someConstant'

AND cColumn = <cfqueryparam value="someConstant" cfsqltype="#aSqlType#" />

パフォーマンスが向上する可能性はありますか? パフォーマンスを損なう可能性はありますか?

同じことを (cfqueryparam を使用して) 行うとどうなりAND dColumn is nullますか?

私の調査結果は決定的ではありませんでした。

重要な場合は、ColdFusion9 と Oracle db 11g を想定してください。

編集:

cfqueryparam タグが特に定数や null 値で使用されていること、およびパフォーマンスの改善がある場合はそれについて質問していることを繰り返したいと思います。

4

3 に答える 3

-2

クエリ パラメータを使用すると、2 つの方法で役立ちます。

まず、SQLI から保護されます。パラメータ内のデータが期待どおりであることを確認するために、保護レベルが追加されます。

次に、パフォーマンスが向上します。ただし、増加はデータ スキーマとインデックスによって異なります。パラメータにより、データベースはクエリ プランをキャッシュできます。これにより、クエリ実行の初期オーバーヘッドが高速化されます。クエリが複雑になるほど、クエリ プランをキャッシュすることが重要になります。

また、where 句のすべての列にカバー インデックスがあり、それらが正しい順序になっていることを確認してください。そうでない場合、クエリ オプティマイザはインデックスを無視して、直接テーブル スキャンを実行することを選択する場合があります。

于 2013-07-10T17:20:04.740 に答える