検索画面等で抽出条件の有無により、SQLのWHERE句に条件を追加したり除外したりといったことが多々あります。
SELECT * FROM T_JUCHU_H
WHERE
IF ymd_from IS NULL THEN
AND JUCHU_YMD >= ymd_from
END IF
IF ymd_to IS NULL THEN
AND JUCHU_YMD <= ymd_to
END IF
この場合だと、条件が満たした場合
WHERE
AND JUCHU_YMD >= ymd_from AND JUCHU_YMD <= ymd_to
となり、WHERE後の"AND"が付いてしまい、SQLエラーとなります。
このような場合に、"1=1"というおまじないを追加してみると
WHERE 1=1
AND JUCHU_YMD >= ymd_from AND JUCHU_YMD <= ymd_to
SQLエラーとならずに実行されることになり、非常に便利です。
さて、気になったのがWHEREの順番によるパフォーマンスですが
コストベースであるなら気にする必要はないようですね。
実際に私環境上での実行プラン見ても1=1の付加による処理コスト
の変化は見当たりませんでした。
SQLのwhere条件の順序で、速度って変わるのでしょうか?
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=109774565
WHERE句の指定順序とパフォーマンス
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22052&forum=26&6