我正试图找到一种方法来快速查询庞大的表格以进行图表统计。这是我如何形成我的图表数据。日是在x轴上,金额是y轴。
select DATE_FORMAT(earning_created, '%c/%e/%Y') AS day, COUNT(earning_link_id) AS amount from earnings where earning_link_id = 1093
GROUP BY DATE(earning_created)
获得21.8s ....收益大约有550,000行。
我目前正在设置一个只读副本服务器,但这只是暴力,而不是一种优雅的查询方法。
我想知道如何优化此类查询,以便快速获取图表数据?
答案 0 :(得分:1)
正如评论中所建议的那样,该表可能缺乏索引。
最明显的是earning_link_id
,因为它是where
条件中使用的列。
如果您对请求有性能问题和/或想要对其进行优化,请注意,请使用EXPLAIN
和EXPLAIN EXTENDED
。它将向您展示MySQL如何扫描您的表以回答您的查询。如果您的表没有已过滤列的索引( where condition ),它将扫描所有非常昂贵的行;而在earning_link_id
上有索引,MySQL不需要扫描整个表来查找所有受影响的行(查询)。