Сначала еще пламенный, потом реальное решение ...
Я в основном согласен с пламенем, уже брошенным на тебя.
Я не согласен с нормализацией значения ключа. Запросы заканчивают тем, что были ужасны; производительность еще хуже.
Один «простой» способ избежать непосредственной проблемы (ограничение количества столбцов) - это «вертикальное разбиение» данных. Скажем, 5 таблиц по 400 столбцов в каждой. Все они будут иметь один и тот же первичный ключ, за исключением того, что у него может быть AUTO_INCREMENT.
Возможно, лучше было бы определиться с дюжиной полей, которые наиболее важны, и поместить их в «основную» таблицу. Затем логически сгруппируйте датчики и разместите их в несколько параллельных таблиц. При правильной группировке вам, возможно, не придется все время присоединяться ко всем таблицам.
Индексируете ли вы какие-либо значения? Вам нужно искать по ним? Возможно, вы ищете на datetime?
Если вам нужно проиндексировать много столбцов - punt.
Если вам нужно проиндексировать несколько - поместите их в основную таблицу.
Вот реальное решение (если оно применимо) ...
Если вам не нужно индексировать огромное количество датчиков, не создавайте столбцы! Да, вы слышали меня. Вместо этого соберите их в JSON, сожмите JSON, сохраните в поле BLOB. Вы сэкономите массу места; у вас будет только одна таблица без проблем с ограничением столбцов; и т. д. Ваше приложение будет распаковано, а затем будет использовать JSON в качестве структуры. Угадай, что? Вы можете иметь структуру - вы можете сгруппировать датчики в массивы, многоуровневые элементы и т. Д., Как бы хотелось ваше приложение. Еще одна «фича» - это открытый. Если вы добавите больше датчиков, вам не нужно изменять таблицу. JSON, если гибкий таким образом.
(Сжатие необязательно; если ваш набор данных огромен, он поможет с дисковым пространством, а следовательно, и общей производительностью.)