Здравствуйте, <Аноним>, Вы писали:
А>сабж.
Like — это аналог поиска по шаблону. А = исчет строгое соответствие.
Пример
id string
1 da
2 daru
3 okda
4 ok
select count(*) from table where string = 'da'
Ответ — 1
select count(*) from table where string like 'da'
Ответ — 1
select count(*) from table where string like '%da%'
Ответ — 3
... << RSDN@Home 1.1 beta 1 >>
Здравствуйте, Zheka, Вы писали:
Z>Здравствуйте, Аноним, Вы писали:
А>>сабж.
Z>Так же "=" находит записи быстрее, если поле индексное или ключевое.
Z>like ищет во всех записях и не рекомендуется в большой базе данных.
Проверено, мною лично, для научной работы.
Если сравнивать
name = 'слово'
и
name like 'слово'
для неиндексиремого или индексируемого поля,
то разница практически незаметна — несколько процессорных сессий = 10^-4c,
так как поиск результата идет либо полным перебором таблицы либо индекса.
а вот выражения.
К тому же, до меня уже говорили, = полное сравнение,
а Like сравнение по шаблону
и если like будет содержать выражение 'слог%' то время поиска
также будет незначительно отличаться от за тем исключением, что, возможно,
селективность запроса будет уменьшена( б
ольшая селективность всегда лучше)
ну и вообще, повторюсь, Like применяется для поиска строки по шалону, а = для поиска точного соответствия.
по крайней мере это все справедливо для Oracle.
Есть такая тука, Oracle 9i Performance Tuning почитайте, там более подробно написано.
http://technet.oracle.com/docs/products/oracle9i/doc_library/release2/server.920/a96533/index.htm... << RSDN@Home 1.1 beta 1 >>
Здравствуйте, vedmalex, Вы писали:
V>К тому же, до меня уже говорили, = полное сравнение,
V>а Like сравнение по шаблону
V>и если like будет содержать выражение 'слог%' то время поиска
V>также будет незначительно отличаться от за тем исключением, что, возможно,
Хочу добавить, что в плане MS SQL сервера поиск по = или Like 'word%' серьезных
различий в плане производительности не имеет, так как индексы могут использоватся в обоих случаях.
Но, если используется LIKE '%test%', то индексы использоватся не могут, что приводит к table scan.
Здравствуйте, Pavel Kalyakin, Вы писали:
PK>Здравствуйте, vedmalex, Вы писали:
V>>К тому же, до меня уже говорили, = полное сравнение,
V>>а Like сравнение по шаблону
V>>и если like будет содержать выражение 'слог%' то время поиска
V>>также будет незначительно отличаться от за тем исключением, что, возможно,
PK>Хочу добавить, что в плане MS SQL сервера поиск по = или Like 'word%' серьезных
PK>различий в плане производительности не имеет, так как индексы могут использоватся в обоих случаях.
PK>Но, если используется LIKE '%test%', то индексы использоватся не могут, что приводит к table scan.
об этом я заыл упомянть, в оракл такая же фигня, за тем исключением что в случае '%слово%',
если поле индексировано то выполняется сканирование индекса,
а если нет то соответственно TableScan для кортежей удовлетворяющих первой части условия.
Наверняка ктакая же штучка реализована и в оптимизаторе MSSQL,
иначе и tableScan для всей таблицы не самый оптимальный план выполнения — совсем не оптимальный.
... << RSDN@Home 1.1 beta 1 >>