Одиночная таблица ... неправильно.
Одна таблица описывает каждое «устройство» (или «датчик»). Он имеет id
, который, возможно, является 2-байтовым SMALLINT UNSIGNED
(диапазон 0,65K - у вас не будет больше датчиков, чем это?). Обратите внимание, что MAC-адрес и имя принадлежат этой таблице. Это id
используется на другом столе ...
Другая таблица содержит sensor_id
, timestamp
и value
. Эта таблица должна иметь PRIMARY KEY(sensor_id, timestamp)
и быть ENGINE = InnoDB`. Теперь это очень эффективно для нахождения всех показаний для одного датчика за период времени.
Это полностью исключает SELECT DISTINCT
, поскольку в первой таблице нет дуплей.
Если у вас выпадающее меню, то TINYINT UNSIGNED
(1 байт, 0..255), вероятно, достаточно большой.
Хорошо, я помог вам с двумя SELECTs
; какие еще у тебя будут. Имейте в виду, что производительность в первую очередь зависит от количества строк, к которым нужно прикоснуться. И это число тех, кого вы отвергаете.