更新:在表格中添加键time
(time
)可大幅提升速度!
我需要创建一个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.= '];';
此代码在数据库增长之前正常工作。一段时间后加载查询需要很长时间。如何通过更好/更快的查询来改善这一点以获得相同的结果?