Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
brain-4-me
126 / 125 / 85
Регистрация: 24.12.2013
Сообщений: 669
Записей в блоге: 10
1

Оптимизация базы данных

07.12.2017, 13:35. Просмотров 105. Ответов 3
Метки нет (Все метки)

Здравствуйте!

Подскажи пожалуйста оптимальный поиск телефонов по базе данных.

Есть таблица клиентов, в ней телефоны в разном формате:

7 999 999-99-99
7(999)-999-99-99
8 999-99-999-99

ну и т.п. (не надо спрашивать кто криво так записывал, досталась такая)

так вот движок innoDB, версия mysql 5.7, версия php 7.01
ищу в базе запросом
SQL
1
SELECT `id`, `company_id` FROM `clients` WHERE REPLACE(REPLACE(`phone_job`, '-', ''), ' ','') LIKE '%9999999999%'
ясно дело при этом ключи не использует

explain говорит

idselect_typetable partitionstypepossible_keyskeykey_lenref rows filtered Extra
1 SIMPLE clients\N ALL \N \N\N \N160583100 Using where


Фильтровать каждый раз 160583 строки (при том что данные постоянно добавляются) вариант так себе..
(сейчас оптимизирую таблицу и пишу телефоны в формате 9999999999) но пока не до всех дошел а отчеты надо

вопрос, как быть? как сделать поиск более оптимизированным? или никак? просто все телефоны переписать?

Спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2017, 13:35
Ответы с готовыми решениями:

Оптимизация базы данных
есть таблица слов(около миллиона) и я думаю разбить ее на отдельные таблицы - по алфавиту и длине...

Скопировать структуру базы данных в новую базу данных без самих данных
Здравствуйте! Подскажите пожалуйста, как более удобно скопировать всю базу данных в новую базу...

Оптимизация поиска по базе данных
session_start(); //unset($_SESSION); //unset($_SESSION); //unset($_SESSION); ...

Php + mysql = отобразить перечень таблиц базы данных, схему данных
Всем привет, нужна ваша помощь, как реализовать данные задания? 1. Создать главную страницу сайта,...

Вывод данных из базы данных в выпадающее поле в форме
Создаю выпадающее поле в форме, само поле появляется, но данные из базы данных почему-то не...

3
Jodah
Эксперт PHP
2834 / 2470 / 1052
Регистрация: 01.08.2012
Сообщений: 8,750
07.12.2017, 13:42 2
Цитата Сообщение от brain-4-me Посмотреть сообщение
просто все телефоны переписать?
Я бы привёл все телефоны к одному формату.
0
brain-4-me
126 / 125 / 85
Регистрация: 24.12.2013
Сообщений: 669
Записей в блоге: 10
07.12.2017, 13:45  [ТС] 3
Jodah,
что то типа такого?
SQL
1
UPDATE `clients` SET `phone_job` = REPLACE(REPLACE(`phone_job`, '-', ''), ' ','')  WHERE 1
0
Jewbacabra
Эксперт PHP
3557 / 2955 / 1315
Регистрация: 24.04.2014
Сообщений: 8,989
07.12.2017, 17:33 4
Я бы хранил две колонки - номер как есть и только цифры для поиска. И про конструкцию like '%...%' придется забыть
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2017, 17:33

Добавление записи в базу данных и считывание из базы данных
Здравствуйте! Знаю, что эти вопросы поднимались уже тысячи раз, но помогите пожалуйста. Написала...

Вытаскивание всех данных из строки базы данных
Есть база данных, оттуда вытаскиваю first_name (столбец строки базы данных) Как оттуда вытащить...

Загрузка данных, оптимизация алгоритма для работы с сервером
В таблице хранится примерно 240 000 записей, запрос выполняется где-то за 0.0010 секунд. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru