(Предостережение: этот «ответ» основан на моем понимании замысла, а не на каких-либо «фактах».)
Размер таблицы на диске должен быть пропорционален количеству столбцов.
Как и в большинстве вещей в MariaDB, возможно, существует жесткое ограничение на число столбцов, но я не могу представить себе причину, по которой оно будет меньше 1000. Возможно, вместо этого, некоторая большая степень равна 2.
При ссылке на небольшое количество столбцов не должно иметь значения, сколько столбцов в таблице. Способ структурирования данных должен позволять извлекать каждый столбец с относительно фиксированным усилием.
Для фильтрации я бы ожидал, что предпринимаемые усилия будут зависеть от количества столбцов, используемых для фильтрации, и их распределения. Если ваше предложение WHERE
ссылается на множество столбцов, я не ожидаю хорошей производительности.
Для любого движка наличие большого количества столбцов не обязательно является мудрым проектом. В общем, если у вас есть много столбцов, которые не используются для фильтрации или сортировки (WHERE
, ORDER BY
), вы можете также выбросить их в строку JSON (или другую структуру) и сохранить как один TEXT
или BLOB
столбцы. Затем дайте приложению разобрать строку, чтобы получить отдельные столбцы.
Columnstore светит для «фильтрации». Это также очень хорошо сжимает данные, и мое предложение JSON победило бы это. Но теперь вы попадаете на компромисс между скоростью и пространством, который очень специфичен для данных.
Не могли бы вы описать предложенный вами набор данных?