Имя: Пароль:
1C
 
Если преобразовать строку в числа - ускорит ли это поиск по вхождению строки?
0 RomaH
 
naïve
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
вот людям делать нехрен...
2 DmitrO
 
04.10.17
13:22
Проблема не в типе данных, а в механизме поиска основанном на b-tree индексах. Когда надо искать по подстроке такие индексы бесполезны.

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

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

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

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

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

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

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

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