Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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
Php Mysql查询占用太多时间_Php_Mysql_Sql - Fatal编程技术网

Php Mysql查询占用太多时间

Php Mysql查询占用太多时间,php,mysql,sql,Php,Mysql,Sql,我正在sql中使用查询。首先我用 SELECT FROM_UNIXTIME(`points`.`timestamp`, '%Y-%m-%d') AS `date`, (SELECT COALESCE(SUM(`points`.`votes`),0) FROM `points` WHERE `type` = 1 AND `server_id` = 24 AND FROM_UNIXTIME(`points`.`timestamp`, '%Y-%m-%

我正在sql中使用查询。首先我用

SELECT
    FROM_UNIXTIME(`points`.`timestamp`, '%Y-%m-%d') AS `date`,
    (SELECT  COALESCE(SUM(`points`.`votes`),0) FROM `points`
     WHERE `type` = 1 AND `server_id` = 24 AND
           FROM_UNIXTIME(`points`.`timestamp`, '%Y-%m-%d') = `date`) AS `votes_count`
FROM `points`
WHERE `points`.`timestamp` > UNIX_TIMESTAMP(NOW() - INTERVAL 30 DAY) AND
      `server_id` = 24
GROUP BY `date`
ORDER BY `date`";
大约30秒的时间太慢了。我的桌子是空的


我可以做什么使其速度超过2秒?请尝试以下查询:

SELECT
    FROM_UNIXTIME(`timestamp`, '%Y-%m-%d') AS `date`,
    SUM (CASE WHEN type = 1 THEN votes ELSE 0 END) AS votes_count
FROM points
WHERE `timestamp` > UNIX_TIMESTAMP(NOW() - INTERVAL 30 DAY) AND
      server_id = 24
GROUP BY FROM_UNIXTIME(`timestamp`, '%Y-%m-%d')
ORDER BY `date`
在这里,我删除了
SELECT
语句中不必要的相关子查询。当
类型
1
时,您似乎只想有条件地对投票进行求和。如果是,则以
CASE
语句的形式使用条件聚合

如果这个更改不够快,那么考虑在<代码>时间戳<代码>和<代码> ServsIdI/<代码>栏中添加索引。添加这样的索引应该允许

WHERE
子句更有效地执行


最后,请避免使用关键字来命名列,例如
日期
时间戳
。虽然它们不是保留关键字,但在创建新表的上下文中,它们仍然具有特殊意义。

您的列是否已编制索引?使用
desc table\u name检查是否正在使用索引?使用
explain检查
你能解释一下为什么这个
来自于_UNIXTIME(
时间戳
,“%Y-%m-%d”)=“date”