検索条件にユーザー入力に基づいてテーブルを含める/除外するSQL Serverでクエリを作成する必要がありました。
2 つのテーブルがTABLE_A
ありTABLE_B
、 columnKEYCOLUMN_A
とCOLUMN_A
in TABLE_A
、 columnsFKCOLUMN_B
とCOLUMN_B
inがあるとしますTABLE_B
。
そして、次のようなクエリ:
SELECT TABLE_A.* FROM TABLE_A, TABLE_B WHERE TABLE_A.KEYCOLUMN_A = TABLE_B.FKCOLUMN_B
AND TABLE_A.COLUMN_A LIKE '%SEARCH%' AND TABLE_B.COLUMN_B LIKE '%SEARCH2%'
ユーザーが入力しない場合はSEARCH2
、検索する必要はありませんTABLE_B
。IF ELSE
しかし、これは条項を意味します。また、クエリ内の「オプションの」テーブルの数が増えると、順列と組み合わせも増え、IF
andELSE
ステートメントが多くなります。
代わりに、ステートメントをそのままにしておくことにしました。SEARCH2
が空の場合、クエリは事実上次のようになります。
SELECT * FROM TABLE_A, TABLE_B WHERE TABLE_A.KEYCOLUMN_A = TABLE_B.FKCOLUMN_B
AND TABLE_A.COLUMN_A LIKE '%SEARCH%' AND TABLE_B.COLUMN_B LIKE '% %'
SQL オプティマイザLIKE %%
は、条件自体を削除するのと同じくらい良いことを認識できますか?