Обработка аргументов с нулевым значением в тех случаях, когда условия в Apache вызывают SQL - PullRequest
0 голосов
/ 26 июня 2018

Я не могу понять, как найти индекс для следующего запроса:

select * from Cache 
where accountId = 'demo' 
and (? is null or country = ?) 
and (? is null or county = ?) 
and (? is null or province = ?) 
and (? is null or city = ?) 
and (? is null or locality = ?) 
order by createdAt desc

У меня есть индекс orderGroup по столбцам (accountId, страна, страна, провинция, город, населенный пункт, madeAt (desc))).Если я удаляю остров, он работает.Может быть, есть альтернативный способ переписать это в SQL, чтобы иметь возможность учесть нулевые аргументы?

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете переписать его, используя OR expansion:

select * from Cache 
where accountId = 'demo' and ? is null
union all
select * from Cache 
where accountId = 'demo' and city = ?
...