如果请求sql在RAM和执行时间方面有限制,php的性能如何

如果请求sql在RAM和执行时间方面有限制,php的性能如何,php,performance,optimization,ram,Php,Performance,Optimization,Ram,我正在写一个PHP脚本,但我面临一个小问题, 以下两者之间的具体区别是什么: $sql = "SELECT * FROM $table ORDER BY date DESC LIMIT $limit OFFSET $offset"; $result = mysql_query($sql) or die(mysql_error()); 以及: $sql = "SELECT * FROM $table ORDER BY date DESC"; $result = mysql_query($sql)

我正在写一个PHP脚本,但我面临一个小问题, 以下两者之间的具体区别是什么:

$sql = "SELECT * FROM $table ORDER BY date DESC LIMIT $limit OFFSET $offset";
$result = mysql_query($sql) or die(mysql_error());
以及:

$sql = "SELECT * FROM $table ORDER BY date DESC";
$result = mysql_query($sql) or die(mysql_error());
在服务器中使用的RAM和执行时间方面

编辑:实际上我选择了第一个sql请求,但是为了精确的需要,我必须用我的PHP脚本重新检查一定量的数据,以构建另一个更小的数据量,但是我不能用sql pure来完成这项工作。我在所有结果中使用fetch_数组,直到得到我想要的数量,所以在我做错任何事情之前,我想知道,对于客户端sql+php,什么解决方案更快,什么解决方案在加载到服务器方面更安全


Edit2:重新粘贴ORDERBY子句

好吧,答案不是很明显吗

如果限制select查询的结果集,则该结果集中的数据量将减少。因此,在查看phps时,内存使用情况主要取决于一个中心问题:

如果在一次遍历中检索所有结果集,例如使用fetchAll之类的方法,那么整个结果集都将读入内存

如果按顺序处理结果集,则在给定时间,结果集中只有一个元素被读入内存。因此,除非您复制它,否则内存占用是有限的

另一件事是php内部的性能:显然,您处理的结果集中的元素越多,生成的负载就越大。因此,限制结果集的大小可能会减少负载,除非您有一个很好的方法从结果集中只选取一定范围的元素进行处理


一般的经验法则是:总是只检索您真正需要和想要处理的数据

不幸的是,在我最常见的情况下,这并没有改变任何事情

在哪些案例得到改进方面反应良好:


对于您的情况,本文是关于提供/限制性能的:

有限的结果集执行速度更快,占用的内存更少,这似乎是一个常见的问题sense@RoyalBg总的来说是的,不过仔细看一下是有道理的。。。。除非你有一千排,限制在两千排。但这也是常识。是的,我知道,但在纯sql中,无限制地执行sql请求更快,因此在ram损失和构建结果集的时间之间,以及不向sql请求添加限制所获得的时间之间……在纯sql中,设置限制也应该更快,除非你引入了其他因素,比如订货条款