
lost
10.12.2017
14:35:30
а надо было колонку с телефоном

Andrey
10.12.2017
14:35:44

Anton
10.12.2017
14:36:21
@askipin Сколько пользователей? Если много, то нужен индекс
обратный

Google

Andrey
10.12.2017
14:36:48
like не очень изящная конструкция?

Anton
10.12.2017
14:37:10
нет, но она не умеет в индекс в таком формате

Andrey
10.12.2017
14:37:11

Anton
10.12.2017
14:45:57
после ",3)"

Andrey
10.12.2017
14:52:44
хотя по идее 3 телефона

Anton
10.12.2017
14:53:33
потому что ещё раз ошибся он))))
Group by 1
Хотя нет, тут ты ошибся))))
он написал правильно

Google

Andrey
10.12.2017
14:54:32
ЧОРТ ЧОРТ ЧОРТ работает!

Anton
10.12.2017
14:54:40
тока мееедленно

Andrey
10.12.2017
14:54:42
а то я уже хотел php скрипт писать)
как эту штуку можно оптимизировать?

Anton
10.12.2017
14:56:20
Ну, я писал
Быстро - только реверс-поле
тогда будет моментом искать

Andrey
10.12.2017
14:56:58

Anton
10.12.2017
14:57:03
да

Andrey
10.12.2017
14:57:08
так я ведь все равно лайком искать буду

Anton
10.12.2017
14:57:21
МОжно попробовать виртуальный, если версия сервера высокая.

Andrey
10.12.2017
14:57:40

Anton
10.12.2017
14:57:40
тай мне чуть времени, я распишу весь алгоритм

Andrey
10.12.2017
14:57:45
спасиб
я не очень спец, но можно ночью перепрогонять всю базу и создавать новое поле, поставить на него индекс и записывать в него только 7 последних цифр
тогда без лайка будет

Anton
10.12.2017
14:58:46
именно так, только с одним но!!!

Andrey
10.12.2017
14:59:20
но ведь база пациентов она растет, а пересоздават весь столбец каждую ночь наверно не очень круто

Google

Anton
10.12.2017
14:59:33
погоди))))

Andrey
10.12.2017
14:59:50
ладно) я помню, тебе надо больше времени)
я вот сейчас думаю его в подзапрос засунуть чтобы сразу получить список телефонов, а там послучается он 2 поля возвращает. тотал скрыть можно?

Anton
10.12.2017
15:04:59
@askipin, вот тебе полный алгоритм реализации быстрого поиска по концу телефона
1) добавляешь поле с индексом. Можешь попробовать виртуальное - х.з., какая у тебя версия и прокатит ли.
2) заполняешь его значениями REVERSE(RIGHT(telnum,7));
3) вешаешь триггеры на инсерт и апдейт (или же делаешь это в коде, если есть возможность) SET new.reverce_telnum=REVERSE(RIGHT(new.telnum,7));
4) в поиске делаешь лайк и реверс телефонов reverce_telnum LIKE CONCAT(REVERSE(ValueColumn),'%'))
Суть в чём - бинарное дерево никак не сработает на поиск по окончанию, только поиск с начала
Поэтому надо отзеркалить строку и в поиск совать тоже отзеркаленную.
Я так у себя сделал, все довольны

Andrey
10.12.2017
15:05:56

Anton
10.12.2017
15:06:12
Лайк по началу строки работает по индексу, если он есть

Andrey
10.12.2017
15:06:37

Anton
10.12.2017
15:06:54
Лучше кодом, триггеры - зло))))
но у меня возможности влезть в код не было, поэтому сделал триггеры

Andrey
10.12.2017
15:07:21

Anton
10.12.2017
15:07:22
с другой стороны, у тебя таблица не так часто обновляется, ручная, так что пофиг

Andrey
10.12.2017
15:07:46

Anton
10.12.2017
15:08:03

Andrey
10.12.2017
15:08:26

Anton
10.12.2017
15:08:32
у меня была задача искать по любому куску

Google

Andrey
10.12.2017
15:09:05

Anton
10.12.2017
15:09:05
ибо завтра цифр может оказаться восемь))))
или шесть

Andrey
10.12.2017
15:10:22
хотя можно попбоваться срезать шапку caller id +7812 и +7 и искать like %телефон%

Anton
10.12.2017
15:10:44
искать надо без первого знака процента!!!

Andrey
10.12.2017
15:11:16
ну блин, блин..

Anton
10.12.2017
15:12:37
клиенты тока российские? Тогда стоит банально вырезать ВСЕ спецсимолы и искать по 10 знакам оставшимся справа

Andrey
10.12.2017
15:12:46

Anton
10.12.2017
15:13:32
ну, там как бы тоже код... Если его не пишут - грустнее.

lost
10.12.2017
15:14:06
А откуда ты номера вообще тянешь? С астериска какого-нибудь?

Andrey
10.12.2017
15:14:14

lost
10.12.2017
15:14:22
Оё...

Andrey
10.12.2017
15:14:35
мне надо на дисплее телефона подстветить как звоут и код карточки)

Anton
10.12.2017
15:15:08
тогда в идеале 2 поиска:
1) 10 символов
2) если не нашёл, то 7
как раз если сделаешь реверс, будет всё ништяк.
тока при заполнении поля с реверсом обязательно вырежь всякие дефисики, скобочки, пробельчики и прочее

Andrey
10.12.2017
15:15:57
либо все это проксировать через php

Google

Anton
10.12.2017
15:16:27
а что мешает сделать это одним запросом?))))
сделай через юнион

Andrey
10.12.2017
15:16:33
меня заинтересовали виртуальные столбцы. они заполняются при старте сервера?

Anton
10.12.2017
15:17:34
сложно сложно
легко-легко. ДЕлаешь 2 селекта, добавляешь колонку сортировки, чтобы результаты с совпадением десятти были выше и ставишь между ними UNION))))
что такого?

lost
10.12.2017
15:18:49

Andrey
10.12.2017
15:20:52
что такого?
сервер маша 5.5 похоже не светят виртуальные столбцы..

Anton
10.12.2017
15:21:00
100%

Andrey
10.12.2017
15:22:15
эх.. тогда можно один раз прогнать и заполнить столбец а потом триггер на апдейт для всех новых записей?

Anton
10.12.2017
15:22:34
на инсерт и апдейт

Andrey
10.12.2017
15:22:43
ну да ну да

Anton
10.12.2017
15:22:56
Тока я бы тебе советовал убрать RIGHT из того, что я выше писал, ибо по 10 искать ловоче
но при этом добавить реплейс символов
раз у вас там могут и с дефисиками написать

Andrey
10.12.2017
15:23:44
5760000 нет тут 10 символов

Anton
10.12.2017
15:25:23
что реплейсить?
всё то, что могут стваить в телефон, но там быть не должно. Символы, не являющиеся цифрами

Andrey
10.12.2017
15:26:01

Anton
10.12.2017
15:26:11
дальше найдёшь ты 2