我想为我的表制作页码,需要知道行数。
例如,我的查询是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起始值将根据页面