Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выиграю ли я в скорости select, применив динамическое использование страниц? / 16 сообщений из 16, страница 1 из 1
28.04.2017, 01:56
    #39445804
whoim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
Задача: быстро проводить поиск наличия записи (номер телефона) в огромном массиве данных (десятки миллионов строк).
Возникла мысль - на этапе загрузки данных в базу создавать таблицы, имя которых основано на первых 3-х или 4-х цифрах номера, и соответственно размещать данные в нужных таблицах: номер 79001234567 помещаем в таблицу 9001, а 79281234567 в таблицу 9281.

Соответственно, при поиске данных (важно определить сам факт наличия записи в базе) мы будем искать данные сразу в нужной таблице, которая естественно намного меньше по объёму, чем все данные.
Поиск будет в несколько десятков потоков через php, номера рандомные, соответственно запросы могут быть одновременно к нескольким таблицам.

Поможет ли такой подход увеличить быстродействие? На какие ещё нюансы обратить внимание?
Спасибо!
...
Рейтинг: 0 / 0
28.04.2017, 08:18
    #39445838
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
whoimВозникла мысль - на этапе загрузки данных в базу создавать таблицы, имя которых основано на первых 3-х или 4-х цифрах номера, и соответственно размещать данные в нужных таблицах: номер 79001234567 помещаем в таблицу 9001, а 79281234567 в таблицу 9281.Поздравляю, Вы изобрели партиционирование.

whoimНа какие ещё нюансы обратить внимание?
А идея создать индекс в голову не приходила?
...
Рейтинг: 0 / 0
28.04.2017, 08:19
    #39445839
whoim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
А индекс поможет при сотне миллионов строк?
...
Рейтинг: 0 / 0
28.04.2017, 08:22
    #39445841
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
Нет, блин, индексы придуманы исключительно для того, чтобы на винтах свободное место не простаивало!

Ну что за детский сад-то, право слово?
...
Рейтинг: 0 / 0
28.04.2017, 11:22
    #39445957
whoim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
Вы, наверное, меня не поняли)
Естественно, что индексы будут использоваться.
Можно ли обойтись одним индексом, без разбиения на таблицы?
Или, учитывая объёмы, лучше все таки разбивать?
...
Рейтинг: 0 / 0
28.04.2017, 11:37
    #39445980
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
Десятки миллионов записей - это объём приличный, но вовсе даже не огромный. Индекс по номеру телефона будет байт 20 на запись, т.е. индекс метров 200. Поиск в таком индексе будет достаточно быстрым. Просто надо понимать, что для снижения времени поиска вдвое даже чисто теоретически надо будет сделать порядка сотни партиций - а на самом деле выигрыш окажется гораздо меньше желаемого...
Что же до раскладывания данных в несвязанные таблицы - не советую даже задумываться о таком подходе. Явно не тот случай по соотношению профита к геморрою.
...
Рейтинг: 0 / 0
28.04.2017, 11:38
    #39445981
whoim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
Спасибо!
Думаю, дальше будет правильным потестировать.
...
Рейтинг: 0 / 0
28.04.2017, 11:41
    #39445984
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
Если уж на то пошло, то при отсутствии неформатов в поле номера телефона разумнее преобразовать его в целочисленный тип (BIGINT). Тут, пожалуй, можно поиметь какой-то профит - если нет регулярной задачи поиска номера по шаблону типа '7916123??45'
...
Рейтинг: 0 / 0
28.04.2017, 12:12
    #39446007
Polar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
AkinaЕсли уж на то пошло, то при отсутствии неформатов в поле номера телефона разумнее преобразовать его в целочисленный тип (BIGINT). Тут, пожалуй, можно поиметь какой-то профит - если нет регулярной задачи поиска номера по шаблону типа '7916123??45'

А в чем проблема при поиске по шаблону в том случае?

>79161230045 && <79161239945
...
Рейтинг: 0 / 0
28.04.2017, 12:17
    #39446010
whoim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
БигИнт и планировался, искать надо точное вхождение точного номера.
...
Рейтинг: 0 / 0
28.04.2017, 12:26
    #39446021
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
PolarА в чем проблема при поиске по шаблону в том случае?В конкретно том - никакой. Кроме преобразования маски в диапазон. Но ведь маска может быть, например, '791?123??45' - и станет грустно.
...
Рейтинг: 0 / 0
28.04.2017, 12:45
    #39446037
Polar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
AkinaPolarА в чем проблема при поиске по шаблону в том случае?В конкретно том - никакой. Кроме преобразования маски в диапазон. Но ведь маска может быть, например, '791?123??45' - и станет грустно.
ну в 10 раз больше условий будет.
Я бы первую цифру выкинул из базы.
...
Рейтинг: 0 / 0
28.04.2017, 13:48
    #39446105
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
PolarЯ бы первую цифру выкинул из базы.Где гарантия, что в БД не будут попадать забугорные номера? да и не мешает она в общем-то...
...
Рейтинг: 0 / 0
28.04.2017, 14:48
    #39446177
whoim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
Делается сразу под любые номера, кроме конечно имеющих ведущий ноль.
...
Рейтинг: 0 / 0
28.04.2017, 18:03
    #39446306
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
whoimДелается сразу под любые номера, кроме конечно имеющих ведущий ноль.Проходили. Не я - знакомые. Они просто заменили ведущий плюс на единицу, и при обработке добавляли её в фильтр и убирали перед выводом. Ну и для "наших" номеров заменяли ведущую "8" на "+7" единого образия ради. Неплохо вроде работало...
...
Рейтинг: 0 / 0
28.04.2017, 20:50
    #39446378
Polar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выиграю ли я в скорости select, применив динамическое использование страниц?
AkinaГде гарантия, что в БД не будут попадать забугорные номера? да и не мешает она в общем-то...
Убрать тогда в другое поле. Забугорные номера бывают двузначные. Это все таки код страны, отличается по смыслу от всех остальных циферок в номере.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выиграю ли я в скорости select, применив динамическое использование страниц? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]