简单的SQL查询需要很长时间

时间:2015-08-26 15:30:15

标签: mysql

我有一个查询,用于确定使用最近2个读数的仪表数据时间戳之间的间隔:

 $interval_query    = sprintf("SELECT `stamp` 
                              FROM `processed_gauge_data`
                              WHERE `processed_gauge_data`.`gauge_id` IN (%s) 
                              ORDER BY `processed_gauge_data`.`stamp` DESC LIMIT 2;",
                      $gauge_id
                  ); 

这是一个包含EXPLAIN结果的图像以及表的结构: http://i.imgur.com/QJmHmeb.png?1

这适用于大多数仪表,但有2个特别需要30-45秒才能执行此查询。选择这两个仪表的所有数据只需不到一秒钟。是什么造成的?我不明白发生了什么。

1 个答案:

答案 0 :(得分:1)

原来是因为 ORDER BY processed_gauge_datastamp DESC 。我将查询更改为ORDER BY' id'它从30-45秒到.0006-.0003秒:

 $interval_query    = sprintf("SELECT `stamp`, 'id' 
                          FROM `processed_gauge_data`
                          WHERE `processed_gauge_data`.`gauge_id` IN (%s) 
                          ORDER BY `processed_gauge_data`.`id` DESC LIMIT 2;",
                  $gauge_id
              );