Вход | Регистрация

1С:Предприятие ::

Метки: 

Если преобразовать строку в числа - ускорит ли это поиск по вхождению строки?

Я
   RomaH
 
04.10.17 - 13:17
Есть справочник физлиц
порядка 500 000 записей
максимальная реальная длина:
ФИО = 25+13+25 = 58

в базе постоянно ищут физ лиц по вхождению строки

вот если ФИО преобразовать к списку чисел (ну допустим до 4-5 символов подряд)
т.е.
морозовяк выдаст такую таблицу чисел:
3638    3840    4038    3831    3138    3826    2655    5534
    363840    384038    403831    383138    313826    382655    265534
        36384038    38403831    40383138    38313826    31382655    38265534

эту таблицу в ТЧ

потом пользователь набирает "мороз" - преобразуем эту строку в два набора по 4 символа - 36384038 и 38403831 и искать не 
ГДЕ Подобно %мороз%

а ГДЕ Ключ = 36384038 и Ключ = 38403831
 
  Рекламное место пустует
   Волшебник
 
Модератор
1 - 04.10.17 - 13:21
вот людям делать нехрен...
   DmitrO
 
2 - 04.10.17 - 13:22
Проблема не в типе данных, а в механизме поиска основанном на b-tree индексах. Когда надо искать по подстроке такие индексы бесполезны.

Зачем изобретать полнотекстовый поиск, если его можно просто включить. Вот там природа индекса другая. :)
   Fish
 
3 - 04.10.17 - 13:23
(0) попробуй, потом напиши результат. А так +100 к (1)
   Волшебник
 
Модератор
4 - 04.10.17 - 13:23
Добавь полнотекстовый индекс по полю ФИО

Или добавь таб.часть "КомпонентыФИО", в котором храни отдельными строками фамилию, имя и отчество и ищи по индексированному полю так:

или ищи так: ГДЕ КомпонентФИО LIKE "мороз%"

т.е. без первого процента
   H A D G E H O G s
 
5 - 04.10.17 - 13:25
(0) Открой для себя волшебный мир SHA1/MD5, вот это все.
   Волшебник
 
Модератор
6 - 04.10.17 - 13:25
(4)+ У нас в базе есть такая таблица, в которой 100 млн строк. Поиск по ней мгновенный. Главное проиндексировать и задавать строку без первого процента
   RomaH
 
7 - 04.10.17 - 13:27
(4) да все уже есть - но скорость не устраивает и нагрузка на сервер
поиск - фоновый по строке для справочника

т.е. пока пользователь набирает лоб ром ал - проходит 2-3 запроса

итоговый поиск занимает 2-3 сек

хочу что бы вообще все летало

про полнотекстовый- не надо
   RomaH
 
8 - 04.10.17 - 13:29
да, первого процента у нас тоже нет
   H A D G E H O G s
 
9 - 04.10.17 - 13:31
(8) Тогда все должно работать мгновенно
   Волшебник
 
Модератор
10 - 04.10.17 - 13:32
(8) А в сабже первый процент есть.
 
 
   Сти
 
11 - 04.10.17 - 13:58
(5) вот только волшебный мир потребует ввода полного имени до последнего символа, чтобы получить соответствующий волшебный хэш, дабы по нему потом искать ) а вот полнотекстовый поиск уже есть из коробки
   Serg_1960
 
12 - 04.10.17 - 14:01
+(10) угу, есть. "по вхождению строки" - они там должны быть по определению. Имхо, надо по началу строки поиск переделать. Ведь мало кто будет искать ФИО по последним трём буквам "-адя" :)


Список тем форума
Рекламное место пустует   Рекламное место пустует
Программист всегда исправляет последнюю ошибку.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует