Ben bu sorgu var:
SELECT ROUND(AVG(temp)*multT + conT,2) as temp,
FLOOR(timestamp/$secondInterval) as meh
FROM sensor_locass
LEFT JOIN sensor_data USING(sensor_id)
WHERE sensor_id = '$id'
AND project_id = '$project'
GROUP BY meh
ORDER BY timestamp ASC
Amaçlı I verilere grafik sadık yapmak için bir veri piksel değerinde üzerinde ortalamasını kullanın, bir grafik çizim için verileri seçmek için.
Şimdiye kadar optimizasyon MyISAM ve InnoDB ama hayır şans arasındaki geçiş, dizinleri ekleme dahil etmiştir.
Grafik zoom ve veri toplama süresi ile zaman aralığı değişiklikleri beri GROUP BY
deyimi için ayrı bir sütun yapamazsınız, sorgu ancak yavaş. Herkes bu hızlı gruplandırma yapmak için bu sorguyu veya tabloyu optimize etmek için bir fikir var mı, ben şu anda timestamp
, sensor_id
ve project_id
sütunlar, üzerinde bir dizin var timestamp
göstergesi ancak kullanılmaz.
Sorgusu ile explain extended
çalıştırırken ben şu olsun:
1 SIMPLE sensor_locass ref sensor_id_lookup,project_id_lookup sensor_id_lookup 4 const 2 100.00 Using where; Using temporary; Using filesort
1 SIMPLE sensor_data ref idsensor_lookup idsensor_lookup 4 webstech.sensor_locass.sensor_id 66857 100.00
sensor_data
masa i ile çalışmak zorunda sona erecek veri miktarının sadece küçük bir kısmını şu an 2,7 milyon veri noktası olarak içerir. Herhangi bir yardımcı fikir, yorum veya çözüm en hoş olurdu
EDIT table definitions:
CREATE TABLE `sensor_data` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`gateway_id` int(11) NOT NULL,
`timestamp` int(10) NOT NULL,
`v1` int(11) NOT NULL,
`v2` int(11) NOT NULL,
`v3` int(11) NOT NULL,
`sensor_id` int(11) NOT NULL,
`temp` decimal(5,3) NOT NULL,
`oxygen` decimal(5,3) NOT NULL,
`batVol` decimal(4,3) NOT NULL,
PRIMARY KEY (`id`),
KEY `gateway_id` (`gateway_id`),
KEY `time_lookup` (`timestamp`),
KEY `idsensor_lookup` (`sensor_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2741126 DEFAULT CHARSET=latin1
CREATE TABLE `sensor_locass` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`project_id` int(11) NOT NULL,
`sensor_id` int(11) NOT NULL,
`start` date NOT NULL,
`end` date NOT NULL,
`multT` decimal(6,3) NOT NULL,
`conT` decimal(6,3) NOT NULL,
`multO` decimal(6,3) NOT NULL,
`conO` decimal(6,3) NOT NULL,
`xpos` decimal(4,2) NOT NULL,
`ypos` decimal(4,2) NOT NULL,
`lat` decimal(9,6) NOT NULL,
`lon` decimal(9,6) NOT NULL,
`isRef` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `sensor_id_lookup` (`sensor_id`),
KEY `project_id_lookup` (`project_id`)
) ENGINE=MyISAM AUTO_INCREMENT=238 DEFAULT CHARSET=latin1