SELECT *
FROM Food
WHERE (Name = 'Apple' AND <condition A>)
OR (Name = 'Biscuit' AND <condition B>)
OR (Name = 'Chocolate' AND <condition C>)
現在、条件A、B、およびCはデータ駆動型ではないため(行ごとに変化しないため)、これはパフォーマンスの観点からは望ましくありません。したがって、SQLを動的に構築することにより、考えられるすべての条件の順列を使用できます。IN句を使用して、その文字列を動的に構築します。
さらに別の解決策は、各SELECTを個別に実行することによってクライアントで最終結果を組み立てることです(擬似コード)。
if A then {
result1 = execute("SELECT * FROM Food WHERE Name = 'Apple')
}
if B then {
result2 = execute("SELECT * FROM Food WHERE Name = 'Biscuit')
}
if C then {
result2 = execute("SELECT * FROM Food WHERE Name = 'Chocolate')
}
result = join(result1, result2, result3)
このソリューションは、1つまたは2つの真の条件を持つケースの割合が高い場合に機能する可能性があります。