1

次の SQL を検討してください。

select * from dbname.tablename
where
    field1 = 'a' and
    field2 = 'b' and
    field3 = 'c' and
    1=1

1=1なぜWHERE 句の最後に追加するのか疑問に思われるかもしれません。アドホック クエリでは、SQL を変更せずに条件の任意の組み合わせをコメント アウトできるように、これを行います。この SQL を使用すると、コメント アウトできfield1 = 'a' and、SQL は末尾の1=1条件のために機能します。この小さなトリックなしで、次の SQL を検討してください。

    field1 = 'a' and
    field2 = 'b' and
    field3 = 'c'

コメントアウトするfield3 = 'c'と、SQL が壊れます。これはfield2 = 'b' and、最終条件と見なされ、"and WHAT??" と怒鳴られるからです。

これを質問している理由は1=1、SQL を本番クエリに貼り付ける前に、WHERE 句から を削除するのを忘れていることがわかっているためです。これがパフォーマンスを妨げるかどうか疑問に思っています。 1=1は一定の条件なので、レコードセットに 10,000 行が含まれていても、ここで実際に精力的な計算が行われているのでしょうか。

4

1 に答える 1

1

甘くて簡単な言葉でいいえ

回答を参照してください

于 2013-04-23T13:16:22.617 に答える