Php 查询获取1781s-
我花了很长时间试图弄清楚为什么这个查询会杀死我的服务器:Php 查询获取1781s-,php,mysql,Php,Mysql,我花了很长时间试图弄清楚为什么这个查询会杀死我的服务器: # Query_time: 1781.559941 Lock_time: 0.000060 Rows_sent: 0 Rows_examined: 7576453128 SET timestamp=1460479284; SELECT r.user FROM questions q, results r WHERE r.user = 0 AND r.user=q.user GROUP BY q.user LIMIT 1; 结果中有9
# Query_time: 1781.559941 Lock_time: 0.000060 Rows_sent: 0 Rows_examined: 7576453128
SET timestamp=1460479284;
SELECT r.user
FROM questions q, results r
WHERE r.user = 0
AND r.user=q.user
GROUP BY q.user
LIMIT 1;
结果
中有9891888条记录,而问题
中可能有7000条记录
在我看来这毫无意义
我在两个表中的
user
上都设置了索引。当您刚刚获取r.user
时,这个查询究竟是为了什么?在我看来,您可以通过内部联接获得相同的结果
当您仅获取r.user
时,此查询的确切目的是什么?在我看来,您可以通过内部联接获得相同的结果
我会试试这个。。。但是你应该试着看看解释计划。我认为GROUPBY可能会导致速度减慢,所以我将其去掉并使用正常的连接语法。还可能需要查看大表上索引的运行状况,并确保它没有碎片化(尝试重新构建)
嗯我想试试这个。。。但是你应该试着看看解释计划。我认为GROUPBY可能会导致速度减慢,所以我将其去掉并使用正常的连接语法。还可能需要查看大表上索引的运行状况,并确保它没有碎片化(尝试重新构建) HTH尝试此查询:
SELECT `user` FROM `questions`
INNER JOIN `results`
ON `user`.`user`=`results`.`user`
WHERE `user`.`user` = 0
GROUP BY `user`.`user`
LIMIT 1;
如果不起作用,您可以为表格用户编写创建表格和问题吗?尝试以下查询:
SELECT `user` FROM `questions`
INNER JOIN `results`
ON `user`.`user`=`results`.`user`
WHERE `user`.`user` = 0
GROUP BY `user`.`user`
LIMIT 1;
如果不起作用,您可以为表格用户编写创建表格和问题吗?使用“打开”连接两个表并检查执行查询所需的时间o您花了多少时间对此查询进行解释,以了解MySQL是如何执行的?性能问题应包括
EXPLAIN ANALYZE
以及有关表大小、索引、当前时间性能、期望时间、,等等。Slow
是一个相对术语,我们需要一个实际值进行比较。哪些列有索引?推广使用explictJOIN
sintaxis,Aaron Bertrand写了一篇很好的文章连接两个表并检查执行查询所需的时间o您花了多少时间对此查询进行解释,以了解MySQL是如何执行的?性能问题应包括EXPLAIN ANALYZE
以及有关表大小、索引、当前时间性能、期望时间、,等等。Slow
是一个相对术语,我们需要一个实际值进行比较。哪些列有索引?推广explictJOIN
sintaxis的使用,Aaron Bertrand写了一篇很好的文章。