Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中求和函数的最佳查询?_Mysql_Database_Performance_Runtime - Fatal编程技术网

mysql中求和函数的最佳查询?

mysql中求和函数的最佳查询?,mysql,database,performance,runtime,Mysql,Database,Performance,Runtime,我的问题是: SELECT SUM(`acctinputoctets`) , SUM(`acctoutputoctets`) FROM `userhistory` WHERE `compid` = 1 AND acctupdatetime between DATE_ADD(CURDATE() , INTERVAL 0 hour) AND DATE_ADD(CURDATE() , INTERVAL 6 hour); //14.9秒 如何加快运行时间?确保在compid上有索引 也

我的问题是:

SELECT SUM(`acctinputoctets`) , SUM(`acctoutputoctets`) 
FROM `userhistory`
WHERE `compid`    = 1
AND acctupdatetime between  DATE_ADD(CURDATE() , INTERVAL 0 hour) 
 AND  DATE_ADD(CURDATE() , INTERVAL 6 hour);
//14.9秒


如何加快运行时间?

确保在compid上有索引

也可以用作避免访问表eg的复合索引

create index idx_compid on userhistory (compid, acctupdatetime, acctinputoctets, acctoutputoctets)
或者至少是一个包含所有列的组合,其中

create index idx_compid on userhistory (compid, acctupdatetime)

这里没什么可谈的。你能添加你的表定义、解释计划和一些用户历史记录大小的指示吗?这里你唯一能做的就是在
WHERE
子句中的列上添加索引。我在compid上有索引,idi有一百万条记录。