Спочатку ще трохи полум’яного, а потім справжнє рішення ...
Я здебільшого погоджуюся з уже викинутим на вас полум’ям.
Я не згоден з нормалізацією ключових значень. Результати запитів жахливі; продуктивність ще гірша.
Один "простий" спосіб уникнути негайної проблеми (обмеження кількості стовпців) - "вертикально розділити" дані. Майте, скажімо, 5 таблиць із 400 стовпчиками у кожній. Усі вони матимуть однаковий первинний ключ, за винятком одного, він може бути AUTO_INCREMENT.
Можливо, краще було б визначитися з десятками полів, які є найважливішими, і помістити їх у «головну» таблицю. Потім згрупуйте датчики якимось логічним способом і поставте їх у кілька паралельних таблиць. При правильному групуванні вам, можливо, не доведеться постійно приєднуватися до всіх таблиць.
Ви індексуєте якесь із значень? Вам потрібно пошукати їх? Можливо, ви шукаєте на дату?
Якщо вам потрібно проіндексувати багато стовпців - punt.
Якщо вам потрібно проіндексувати декілька - покладіть їх у головну таблицю.
Ось справжнє рішення (якщо воно застосовується) ...
Якщо вам не потрібен великий масив датчиків, індексований, то не робіть стовпчиків! Так, ви мене почули. Натомість збирайте їх у JSON, стискайте JSON, зберігайте у полі BLOB. Ви заощадите тонну місця; у вас буде лише одна таблиця, без проблем з обмеженням стовпців; т. т. Ваша програма не скасуватиме, а потім використовувати JSON як структуру. Вгадай що? Ви можете мати структуру - ви можете згрупувати датчики в масиви, багаторівневі речі тощо, так, як хотів би ваш додаток. Ще одна «особливість» - це відкритість. Якщо ви додасте більше датчиків, вам не потрібно ЗНАЧІТЬ таблицю. JSON, якщо таким чином гнучким.
(Стиснення необов’язкове; якщо ваш набір даних величезний, це допоможе простору на диску, отже, і загальній продуктивності.)