Каков наилучший способ поиска по шаблону в SQL Server 2005? - PullRequest
2 голосов
/ 26 ноября 2008

Итак, у меня есть stored procedure, который принимает код продукта, например 1234567890. Я хочу упростить поиск по шаблону для этих продуктов. (т.е. 123456*) и пусть он вернет все те продукты, которые соответствуют. Каков наилучший способ сделать это?

Я в прошлом использовал что-то вроде ниже:

SELECT @product_code = REPLACE(@product_code, '*', '%')

, а затем выполните LIKE поиск в поле product_code, но я чувствую, что его можно улучшить.

Ответы [ 2 ]

1 голос
/ 26 ноября 2008

То, что вы уже делаете, - это лучшее, что вы можете сделать.

Одна из оптимизаций, которую вы можете попробовать, - это обеспечить наличие индекса для столбцов, для которых вы это разрешаете. SQL Server все равно нужно будет выполнить полное сканирование для поиска с использованием подстановочного знака, но он будет выполняться только по определенному индексу, а не по полной таблице.

Как всегда, проверять план запроса до и после любых изменений - отличная идея.

0 голосов
/ 26 ноября 2008

Пара случайных идей

Это зависит, но вы могли бы рассмотреть:

  • Всегда ищите подстроку по умолчанию. например если пользователь вводит «1234», вы ищете:

    ГДЕ продукт типа "% 1234%"

  • Разрешить пользователям полный контроль. то есть просто взять их ввод и передать его в предложение LIKE. Это означает, что они могут придумывать свои собственные поисковые запросы. Это будет полезно, только если ваши пользователи заинтересованы в обучении.

    ГДЕ продукт как @ input

...