@mysql_ru

Страница 102 из 142
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
@askipin Сколько пользователей? Если много, то нужен индекс
я не думаю что много, завтра гляну базу, не больше 50-100к скорее всего

like не очень изящная конструкция?

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

Andrey
10.12.2017
14:37:11
ты литерал подсунул в функцию...
не понял, где я ошибся?

Anton
10.12.2017
14:45:57
не понял, где я ошибся?
он херню сморозил, с ним бывает)))) У тебя запятая после функи убежала

после ",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 скрипт писать)

тока мееедленно
ну мне 1 раз прогнать и забыть

как эту штуку можно оптимизировать?

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),'%'))

Суть в чём - бинарное дерево никак не сработает на поиск по окончанию, только поиск с начала

Поэтому надо отзеркалить строку и в поиск совать тоже отзеркаленную.

Я так у себя сделал, все довольны

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

Anton
10.12.2017
15:06:54
Лучше кодом, триггеры - зло))))

но у меня возможности влезть в код не было, поэтому сделал триггеры

Andrey
10.12.2017
15:07:21
Лучше кодом, триггеры - зло))))
а зачем реверс в новое поле сувать? можно просто новое поле с концом телефона

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

Anton
10.12.2017
15:08:03
каждый день пациенты добавляются.
каждый день - это не по 10 в секунду))))

Andrey
10.12.2017
15:08:26
каждый день - это не по 10 в секунду))))
да, пока столько пациентов у нас нет

Anton
10.12.2017
15:08:32
Если ты будешь делать по семи, то да
просто при таком подходе цифру 7 из триггера можно убрать, хранить весь и иметь намного более расширяемый контент

у меня была задача искать по любому куску

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
А откуда ты номера вообще тянешь? С астериска какого-нибудь?

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
как раз если сделаешь реверс, будет всё ништяк.
в верборде можно кинуть только 1 запрос mysql

либо все это проксировать через 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
5760000 нет тут 10 символов
а тебе и не надо, если сделаешь запрос с UNION

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

Andrey
10.12.2017
15:26:01
а тебе и не надо, если сделаешь запрос с UNION
ну а смысл делать в базу по 10 запросов с уменьшением длины телефона? разве не лучше в плане нагрузки сделать сразу 1 на 7 символов

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

Страница 102 из 142