У меня возникла проблема с проектированием структуры таблицы, и я хотел бы услышать ваш ввод. Я создаю таблицу, которая должна содержать около 1-2-миллиметровых строк, позволяет называть их пользователями, и для каждого пользователя мне нужно хранить около 500 логических значений. Основное внимание в этой таблице должно быть быстрым, чтобы читать, нет никакого акцента на размер или время записи. Основные запросы будут касаться выбора количества пользователей, соответствующих различным значениям булевых столбцов, как true или false.Использование масок в таблице MySQL
Итак, вот мой вопрос: я должен проектировать в своем уме.
Сначала идет прямо на один вид, я буду только 1 таблица с 500 столбцами, которые являются логическим/TINYINT и просто найти результаты с простыми запросами фильтрации с одной таблицей. Не уверен в скорости этого запроса, и о возможностях MySQL работать с таким количеством столбцов.
Второй вариант несколько сложный. Я хотя бы об хранении логических значений в качестве флагов в маске, поэтому количество столбцов было бы значительно уменьшено, но не уверен, хотя о скорости при использовании побитовых операций в SELECT в WHERE.
У кого-нибудь есть опыт работы с такими данными и сравнение скорости между аналогичными методами? Или кому-нибудь лучше понять, как подойти к этому?
базы данных nonSQL, в которых хранятся значения как JSON или что-то. –
. Моим основным для вас является то, что я использую поразрядное использование в качестве системы разрешений. Таким образом, каждый из моих пользователей имеет 1 столбец для значения разрешения, который может идти от 2 до 2^32, и довольно хорошо работать таким образом. –
Вот главный вопрос: как вы будете запрашивать эту таблицу? Только по идентификатору пользователя? По шаблонам логических значений (например, 'WHERE a = 1 AND b = 0 AND d = 1'? Вот еще один ключевой вопрос: можете ли вы добавить еще одно логическое значение? –