Najpierw trochę więcej ognia, potem prawdziwe rozwiązanie ...
W większości zgadzam się z płomieniami, które zostały już na ciebie rzucone.
Nie zgadzam się z normalizacją klucz-wartość. Zapytania stają się okropne; wydajność jeszcze gorsza.
Jednym „prostym” sposobem uniknięcia bezpośredniego problemu (ograniczenie liczby kolumn) jest „pionowe” podzielenie danych. Załóżmy, powiedzmy, 5 tabel z 400 kolumnami każda. Wszystkie miałyby ten sam klucz podstawowy, z tym wyjątkiem, że może to być AUTO_INCREMENT.
Być może lepiej byłoby zdecydować o kilku najważniejszych polach i umieścić je w tabeli „głównej”. Następnie zgrupuj czujniki w logiczny sposób i umieść je w kilku równoległych tabelach. Przy odpowiednim grupowaniu może nie być konieczne dołączanie do wszystkich tabel przez cały czas.
Czy indeksujesz którąś z wartości? Czy musisz na nich szukać? Prawdopodobnie szukasz daty / godziny?
Jeśli musisz zaindeksować wiele kolumn - wykop.
Jeśli chcesz zindeksować kilka, umieść je w głównej tabeli.
Oto prawdziwe rozwiązanie (jeśli dotyczy) ...
Jeśli nie potrzebujesz indeksowanej szerokiej gamy czujników, nie twórz kolumn! Tak, słyszałeś mnie Zamiast tego zbierz je do JSON, skompresuj JSON, zapisz w polu BLOB. Zaoszczędzisz mnóstwo miejsca; będziesz mieć tylko jedną tabelę, bez problemów z limitami kolumn; itp. Twoja aplikacja rozpakuje się, a następnie użyje JSON jako struktury. Zgadnij co? Możesz mieć strukturę - możesz pogrupować czujniki w tablice, rzeczy wielopoziomowe itp., Tak jak chciałaby twoja aplikacja. Kolejna „cecha” - jest otwarta. Jeśli dodasz więcej czujników, nie musisz ZMIENIAĆ tabeli. JSON, jeśli w ten sposób elastyczny.
(Kompresja jest opcjonalna; jeśli Twój zestaw danych jest ogromny, pomoże to w wykorzystaniu miejsca na dysku, a tym samym ogólnej wydajności.)