优化mysql查询以加载每小时统计信息

时间:2016-01-25 17:24:19

标签: mysql performance statistics

更新:在表格中添加timetime可大幅提升速度!

我需要创建一个JSON对象,其中包含从MySQL数据库加载的每小时统计信息。对于一天中的每个小时,我需要加载所有命中。时间在MySQL中保存为INT行中的PHP时间戳。

数据库看起来像这样。

CREATE TABLE IF NOT EXISTS wp_statistics` (
  `id` int(11) NOT NULL auto_increment,
  `time` int(11) NOT NULL,
  `hits` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`),
  KEY `time` (`time`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

要创建JSON对象,我使用以下PHP代码。

global $wpdb;

$json = 'data: [';

    for( $i = 0; $i < 24; $i++ ){
        $stime = mktime($i,0,0,$month, $day, $year); // start timestamp
        $etime = mktime($i,59,59,$month, $day, $year); // end timestamp

        $count = $wpdb->get_var("SELECT SUM(hits) FROM ".$wpdb->prefix."statistics WHERE time BETWEEN ".$stime." AND ".$etime);
        $json.= '["'.$i.'", '.$count.'],';
    }

$json.= '];';

此代码在数据库增长之前正常工作。一段时间后加载查询需要很长时间。如何通过更好/更快的查询来改善这一点以获得相同的结果?

0 个答案:

没有答案