我有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
由于
答案 0 :(得分:0)
可能是因为MySQL select子句执行顺序。 MySQL引擎必须首先按id列对表中的所有行进行排序,然后在该限制之后产生10行。 Take a look at this answer.