Ветер в поле писал(а) 29. Мая 2023 :: 19:00:У меня какой-то невозможный глюк. После обновления с версии 3.16.2.14 на более новые, перестал работать LIKE. Причем работает только при поиске по одной букве. Т.е. по условию Спр.Descr collate _1C LIKE 'иванов%' ничего не найдет.
По условию Спр.Descr collate _1C LIKE '%иванов%' ищет все, но попадают, конечно еще и отчества. Но самое главное, что тут поиск без индекса.
По условию Спр.Descr collate _1C LIKE 'и%' нормально ищет используя индекс. А добавляешь еще хотя бы одну букву и ничего не находит.
Та же самая ерунда что чуть выше с IN, в 3.16.2 индекс по LIKE не использовался, можешь сам проверить с помощью "explain QUERY PLAN " +ТекстЗапроса.
В принципе он и не должен работать, я сейчас проверил в коде, индексы я разрешил только по примитивным сравнениям (больше, меньше равно в разных сочетаниях).
Где-то я индексу по LIKE кислород видать не перекрыл (см. ниже, там все интереснее происходит).
Реализовать будет сложно, а вот отключить попробую.
sqlite подает запрос на поиск индекса в 1sqlite:
WHERE Автомобили.DESCR LIKE 'автом%'
Подбор индекса для таблицы SC7649 :
Ограничения: DESCR>=; DESCR<; DESCR like;
Выбран индекс DESCR: UPPER(DESCR)
Стоимость: 10
И подсовывает уже при выполнении запроса DESCR>='автом' и DESCR< 'автон', (это видно уже при explain+ТекстЗапроса) а потом уже видимо хочет прогнать like, но так это не работает, должно быть DESCR< 'автояяяяяяяяяяяяяяяяяяяяяя'.
А какого лешего поиск работает с одной буковой мне вообще никак не понятно. Не должно работать, ну вот просто не должно и все!
P.S. Сейчас стоит отключить индекс через
+Автомобили.DESCR.
P.P.S. Лучше попробуй fts5 с триграмным токинайзером, это значительно круче!
Тут обсуждали
https://forum.mista.ru/topic.php?id=886147&page=1