Мне интересно, как будет выглядеть производительность запроса с использованием ключевого слова LIKE и шаблона в качестве значения по сравнению с отсутствием предложения where.
Рассмотрим предложение where, такое как "WHERE a LIKE" % ". Это будет соответствовать всем возможным значениям столбца" a". Как это сравнивается с отсутствием предложения where.
Причина, по которой я спрашиваю об этом, заключается в том, что у меня есть приложение, в котором есть некоторые поля, которые пользователь может указать значения для поиска. В некоторых случаях пользователю нужны все возможные результаты. В настоящее время я использую один запрос:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Значения "%" и "%" могут предоставляться для соответствия всем возможным значениям для a и или b. Это удобно, так как я могу использовать один и тот же запрос в своем приложении для этого. Интересно, для чего важны соображения производительности. Оптимизатор запросов уменьшает LIKE '%', чтобы просто соответствовать всем? Я понимаю, что, поскольку я использую именованный запрос (подготовленный оператор), это также может повлиять на ответ. Я понимаю, что ответ, вероятно, зависит от конкретной базы данных. Так конкретно, как это будет работать в Oracle, MS SQL Server и Derby.
Альтернативным подходом к этому будет использование 3 отдельных запросов на основе ввода пользователем подстановочного знака.
A - это подстановочный запрос:
SELECT * FROM TableName WHERE b LIKE ?
B - это подстановочный запрос:
SELECT * FROM TableName WHERE a LIKE ?
A и B - подстановочные знаки:
SELECT * FROM TableName
Нет подстановочных знаков:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Очевидно, что один запрос является самым простым и простым в обслуживании. Я бы предпочел использовать только один запрос, если производительность все равно будет хорошей.