Pertama beberapa lebih menyala, lalu solusi nyata ...
Saya sebagian besar setuju dengan api yang sudah dilemparkan pada Anda.
Saya tidak setuju dengan normalisasi nilai kunci. Pertanyaan akhirnya menjadi mengerikan; kinerja lebih buruk.
Salah satu cara 'sederhana' untuk menghindari masalah langsung (pembatasan jumlah kolom) adalah dengan 'mempartisi data' secara vertikal. Memiliki, katakanlah, 5 tabel dengan masing-masing 400 kolom. Mereka semua akan memiliki kunci utama yang sama, kecuali satu yang mungkin memiliki itu AUTO_INCREMENT.
Mungkin lebih baik untuk memutuskan selusin bidang yang paling penting, menempatkannya di tabel 'utama'. Kemudian kelompokkan sensor dengan cara yang logis dan masukkan ke dalam beberapa tabel paralel. Dengan pengelompokan yang tepat, Anda mungkin tidak perlu BERGABUNG dengan semua tabel sepanjang waktu.
Apakah Anda mengindeks salah satu nilai? Apakah Anda perlu mencarinya? Mungkin Anda mencari di datetime?
Jika Anda perlu mengindeks banyak kolom - punt.
Jika Anda perlu mengindeks beberapa - letakkan di tabel utama.
Inilah solusi nyata (jika itu berlaku) ...
Jika Anda tidak membutuhkan banyak sensor yang diindeks, maka jangan membuat kolom! Ya, kamu mendengarku. Alih-alih, kumpulkan mereka ke dalam JSON, kompres JSON, simpan di bidang BLOB. Anda akan menghemat banyak ruang; Anda hanya akan memiliki satu tabel, tanpa masalah batas kolom; dll. Aplikasi Anda akan terkompresi, dan kemudian menggunakan JSON sebagai struktur. Tebak apa? Anda dapat memiliki struktur - Anda dapat mengelompokkan sensor ke dalam array, hal-hal bertingkat, dll, seperti yang diinginkan aplikasi Anda. 'Fitur' lain - itu terbuka. Jika Anda menambahkan lebih banyak sensor, Anda tidak perlu mengubah tabel. JSON jika fleksibel seperti itu.
(Kompresi adalah opsional; jika dataset Anda besar, itu akan membantu dengan ruang disk, maka kinerja keseluruhan.)