Мне нужно создать приложение, которое позволило бы мне получать телефонные номера пользователей с указанными условиями c как можно быстрее. Например, у нас есть 4 столбца в таблице sql (регион, доход, возраст [и 4-й номер с самим номером телефона]). Я хочу получить телефонные номера из таблицы с указанием c региона и дохода. Просто сделать запрос sql не поможет, потому что это занимает много времени. Обновление базы данных 1 раз в день, и у меня есть некоторое время для подготовки данных, как я буду sh.
Вопрос: Как бы вы сделали процесс получения телефонных номеров с указанием c условия как можно быстрее. O (1) в лучшем сценарии. Для быстрого доступа рассмотрим сохранение значений из таблицы sql в оперативной памяти.
Мне пришла в голову следующая идея:
- Для каждого номера телефона создать что-то вроде битрейта. 0, если конкретное условие ложно, и 1, если условие истинно. Но я не уверен, что смогу реализовать его для столбцов с ненулевыми значениями.
- Создать вектор с номерами телефонов.
- Создать вектор с наборами номеров телефонов.
- Чтобы получить телефонные номера - повторите для второго вектора и сравните наборы битов с требуемым.
Это вовсе не O (1). И я до сих пор не знаю, что делать с не булевыми столбцами. Я подумал, что, возможно, можно сделать что-то хорошее с помощью std :: unordered_map (все номера телефонов уникальны) или улучшить мою идею с помощью вектора и масок.
Ps SQL таблица потребляет 4 ГБ памяти, и я могу сохранить до 8 ГБ в оперативной памяти. 500 столбцов.