powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность запроса LIKE или [
14 сообщений из 14, страница 1 из 1
Производительность запроса LIKE или [
    #35792778
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю 2 запроса
1) SELECT * FROM TEST_PRODUCTS.Data WHERE Name [ 'Аспирин'. Быстродействие - 0.052с.
2) SELECT * FROM TEST_PRODUCTS.Data WHERE Name LIKE '%Аспирин%'. Быстродействие - 4.570c

Почему такая разница в быстродействии?

Система: Cache' 2008.2 x86_64
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35792857
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверняка LIKE "обрабатывается" сложнее чем простая операция "содержит" - от того и разница...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35792992
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Да я понимаю, что сложнее обрабатывается. Но даже в Cache' 5.2 запрос c LIKE выполняется за то же время что и [. Отличие там на доли секунды.
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35793026
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=Dimon=,

Думаю, что если по полю Name существует индекс, то выполняется "прыжок" в середину индекса в первом случае, и выполняется перебор индексов во втором случае.
Если во втором случае использовать %STARTWITH, то наверное производительность будет такая как в первом случае.
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35793194
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Name [ 'Аспирин'
Не повод для прыжка в середину индекса - это ведь проверка на вхождение, а не на начало. Я глянул в своей Cache for Windows (x86-32) 2008.2: планы обоих запросов абсолютно одинаковые (как и скорость выполнения). У меня поле Name проиндексировано простым (не bitmap) индексом. По любому, надо планы запросов смотреть.
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35793223
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,

Всегда можно посмотреть, какой же строится код выполнения и потом, вооружившись дополнительной информацией, делать доплнительные выводы.
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35793269
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexKB, так и я о том же :) Кстати, даже если планы обоих запросов совпали, стоит поискать несовпадающие детали в сгенерированных INT-кодах. Ясно, что в общем случае у LIKE должна быть более сложная обработка, и оптимизируется ли она до '[' в тех случаях, когда это возможно, еще вопрос. Есть подозрение, что нет :(.
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35793280
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,

Алексей, наши мысли совпадают, а вот пива мы с Вами давно уже не пили - вот где вопрос!
Надо бы его как-то решать.
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35793287
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslovв общем случае у LIKE должна быть более сложная обработка, и оптимизируется ли она до '[' в тех случаях, когда это возможно, еще вопрос.
Я посмотрел что получается при варианте

Код: plaintext
1.
2.
3.
4.
5.
6.
 &sql(DECLARE MyCursor CURSOR FOR
 	SELECT * FROM tmp.Mans WHERE FIO LIKE '%ВАНОВ%'
 )
 &sql(OPEN MyCursor)
 &sql(FETCH MyCursor)
 &sql(CLOSE MyCursor)

Там LIKE "переделывается" в

Код: plaintext
1.
2.
3.
4.
5.
...
 s %MyCursor0d( 3 )="%ВАНОВ%"
 s %MyCursor0d( 4 )=$$%0ACs1($zu( 28 ,%MyCursor0d( 3 ), 7 ),"")
...
 g:'(%MyCursor0d( 6 )?@(%MyCursor0d( 4 ))) %0ABk1
...

Т.е. косвенное обращение + проверка по шаблону...
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35793463
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaТ.е. косвенное обращение + проверка по шаблонуДа, оптимизация здесь не просматривается. Но все равно, не повод это для почти стократного проигрыша в быстродействии варианту с "[" (тем более на современном процессоре).
AlexKBа вот пива мы с Вами давно уже не пили...+1
Партнеров на Украине у нас еще нет - чем не повод? :)
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35793484
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Alexey Maslov
AlexKBа вот пива мы с Вами давно уже не пили...+1
Партнеров на Украине у нас еще нет - чем не повод? :)[/quot]

Жаль что Украинская медицина, в области информатизации, на уровне Зимбабве и Сомали, а может я даже зря обижаю африканское население...
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35795433
=Dimon=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,

А поробуйте этот запрос сделать без индексного поля в Каше 2008.2 и в Каше 5.2.
В Cache' 5.2 скорость выполнения запросов по LIKE и по [ приблизительно одинакова доли секунды.
А вот в Cache' 2008 - очень сильно разнятся.
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35795855
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=Dimon=поробуйте этот запрос сделать без индексного поля в Каше 2008.2 и в Каше 5.2Да я и так Вам верю :), возможно, что-то ухудшилось в обработке неиндексированных полей в последних версиях. Но мне кажется, обсуждение переходит в чисто академическую плоскость, ибо:
- В документации LIKE и [ явно означены как отдельные операторы, и нигде не сказано, что один может сводиться к другому. Поэтому стоит ли использовать более общий (и заведомо более сложный в обработке) оператор, в тех случаях, когда вполне сгодится более простой?
- С неиндексированными полями в Cache SQL по жизни всё не слава Богу, не здесь, так в другом месте аукнется. Заметьте, что все, пытавшиеся Вам помочь, сразу (по умолчанию) решили, что поле проиндексировано.
...
Рейтинг: 0 / 0
Производительность запроса LIKE или [
    #35796392
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovЗаметьте, что все, пытавшиеся Вам помочь, сразу (по умолчанию) решили, что поле проиндексировано.
Так это же т.с. первый шаг к ускорению обработки запроса...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Производительность запроса LIKE или [
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]