我有一个Raspberry Pi我一直用来记录从一堆1-Wire传感器收集的家庭温度数据。这些数据已经在数年内收集到MySQL数据库中。我使用Raspbian发行版和默认的MySQL配置。我现在有一张拥有超过一百万条记录的表格,我的Pi正在非常缓慢地运行查询。如何在低规格系统上的lrge表上提高MySQL性能?
这里是TemperatureRecords表的描述:
+--------------+----------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------------------+-------+
| timeRecorded | datetime | NO | PRI | 0000-00-00 00:00:00 | |
| sensorName | char(3) | NO | PRI | | |
| tempValue | float | YES | | NULL | |
+--------------+----------+------+-----+---------------------+-------+
我记录为温度的日期和时间,一个3字符传感器名称和值。 我想运行两个查询,一个选择某个传感器的当前(最近)温度,一个选择当天最高温度。
当前温度例如:
SELECT ROUND(tempValue, 1) as tempValue
FROM TemperatureRecords
WHERE DATE(timeRecorded) = '2015-01-20' AND HOUR(timeRecorded) = '20' AND sensorName = 'abc'
ORDER BY timeRecorded DESC LIMIT 1;
最高温度例如:
SELECT MAX(tempValue)
FROM TemperatureRecords
WHERE DATE(timeRecorded) = '2015-01-20' AND sensorName = 'abc';
不幸的是,这些可能需要10-20秒才能完成,这太慢了,尤其是当我想要从数据几个传感器一次显示在网页上。
我试图增加额外的索引表,但是这并没有作出任何改善,我不知道我的理解完全索引反正。我使用MySQL配置在/usr/share/doc/mysql-server-5.5/examples/my-small.cnf发现小系统,我被告知可能会提高性能,但无济于事也试过。
我的MySQL的知识是有点基本。我对Raspberry Pi的期望很高,现在我的数据变得如此之大,或者我能做些什么来改进我的设置?
是的。尝试使用RANGE查询 – Strawberry 2015-01-20 22:52:18