mysql和php的限制查询不同


different between limit query in mysql and php

我想为我的表制作页码,需要知道行数。

例如,我的查询是SELECT * FROM tbl,结果是100行。

我应该限制查询10rows为一个页面。

如果我这样做,我不能得到所有行计数。

我想知道limit with mysql our php在处理速度上是否有区别。

请告诉我你有什么想法

您应该在MySQL中使用LIMIT。为什么?

*Because it will take you less time to fetch some amount of data and transmit it instead of getting everything.
*Because it will consume less memory.
*Because working with smaller arrays is generally faster.

对于我来说,只有当我不能在MySQL中执行过滤时,我才使用PHP作为过滤器

只是更新我的答案,因为Joachim Isaksson已经发布了:

SQL_CALC_FOUND_ROWS将帮助您计算所有行,以便您可以执行正确的分页。

最好的方法可能是使用FOUND_ROWS()并将它们结合使用;

SELECT SQL_CALC_FOUND_ROWS * FROM tbl LIMIT 10

…以获得前10行作为结果。然后你可以输入;

SELECT FOUND_ROWS()

如果您没有使用LIMIT,您将获得的总行数。

如果您将有100k行会发生什么?当然,您将获得行数,但性能会显著降低(并且内存使用会显著增加)。只需使用第二个查询获取行数和限制行在mysql

我理解你的问题,解决方案可能是这样的:严格由mysql

  • 首先使用两个函数计数总记录
  • 获取结果的秒数
  • select count(1) as total from table_name
  • 选择col1, col2 . .$slot_size

现在slot_size是您想要在页面上显示的记录数,例如10起始值将根据页面

而改变