次の 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 行が含まれていても、ここで実際に精力的な計算が行われているのでしょうか。