如何在实时应用程序中加速MySQL查询



我创建了一个闪亮的应用程序,通过实时查询MySQL数据库来渲染绘图、表格和地图。由于我们谈论的是大数据(即1200万行(,无论是在SQL还是Spark(使用scala和python(中,查询都需要很长时间才能执行。为了加快查询速度,您有什么建议吗?我一直在考虑改用Cassandra,但从关系数据库到NoSQL数据库的数据迁移很有挑战性。。。

数据库背景:给定时间戳和给定蓝牙站中的车辆检测数据。有两个表格:一个是车站的位置和名称,另一个是时间戳、车站和车辆数量。

我的一个查询示例如下,其中我按月分组以获取每个月检测到的车辆总数。

SELECT MONTH(timestamp) as month,SUM(count) as c
FROM bluetoothstations.measurement
GROUP BY month(timestamp);

提前谢谢!

数据插入后不会更改,对吗?在这种情况下;汇总表";夜间(或数据为INSERTed(。然后,汇总表将允许更快地生成COUNT(或其他聚合(。

更多讨论:http://mysql.rjweb.org/doc.php/summarytables

我认为MONTH(timestamp)导致了一个完整的表扫描。我的猜测是,如果您将MONTH(timestamp)保存为bluetoothstation.measurement中的一个单独列,例如month,然后在month上添加索引,那么您可以运行

SELECT month,SUM(count) as c
FROM bluetoothstations.measurement
GROUP BY month;

我希望它能跑得更快。

使用DESCRIBE(也称为EXPLAIN(获取查询的执行计划;这会让您更好地了解是什么导致查询速度减慢,以及哪里需要索引。

最新更新