|
Если преобразовать строку в числа - ускорит ли это поиск по вхождению строки? |
☑ |
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) угу, есть. "по вхождению строки" - они там должны быть по определению. Имхо, надо по началу строки поиск переделать. Ведь мало кто будет искать ФИО по последним трём буквам "-адя" :)
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший