为什么Mysql表大小会影响使用LIMIT命令的运行时

时间:2016-05-11 10:00:09

标签: php mysql

我有2个表 - 信息和评论。 info有270,000行,而comments只有100行。

我运行一个php脚本,从数据库中选择数据并将其编码为json格式。 PHP脚本还将响应限制为仅前10行,并且除了名称外,PHP文件Info.php和Comments.php都完全相同。

那么,为什么只有打印前10行时,270,000行的表比加载100行的表占用更多时间? 评论需要1秒,而信息需要10秒。

这是PHP查询代码,非常简单:

Info.php:$query = "SELECT * FROM info ORDER BY id LIMIT 10;";

Comments.php:$query = "SELECT * FROM comments ORDER BY id LIMIT 10;";

至于测试目的,它们都具有相同的列和相同的数据,唯一的区别是行数。所以我用PHP测试了时间:

Info.php:

select from database time: 0.6090 seconds
time taken to decode JSON: 6.4736 seconds

而Comments.php结果:

select from database time: 0.7309 seconds
time taken to decode JSON: 1.7178 seconds

由于

1 个答案:

答案 0 :(得分:0)

可能是因为MySQL select子句执行顺序。 MySQL引擎必须首先按id列对表中的所有行进行排序,然后在该限制之后产生10行。 Take a look at this answer.