小编32S*_*oth的帖子

不使用 min() max() 获取选择的第一条和最后一条记录

我的能量计每分钟将(累计)消耗写入 db。为了获得我今天的消费,我使用:

SELECT
  (MAX(energy_kwh) - MIN(energy_kwh)) AS kwh_today
FROM logging.main_meter
WHERE DATE_FORMAT(strtime, '%Y-%m-%d') = CURDATE();
Run Code Online (Sandbox Code Playgroud)

问题是: max() 和 min() 似乎大大减慢了查询速度。我在列中添加了一个键,energy_kwh但没有帮助。我敢打赌有更好的方法来获得计算的第一个和最后一个记录。

表格(实际上要大得多,约 130 列,所以我将其缩小到相关部分):

CREATE TABLE 'main_meter` 
( 
  id int(11) NOT NULL AUTO_INCREMENT, 
  timestamp int(11) DEFAULT NULL, 
  strtime datetime DEFAULT NULL, 
  energy_kwh double unsigned DEFAULT '0', 
) ENGINE=InnoDB AUTO_INCREMENT=1717655 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

mysql query-performance

2
推荐指数
1
解决办法
766
查看次数

标签 统计

mysql ×1

query-performance ×1