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

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

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

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

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

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

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


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