0

我正在尝试为我的表格制作页码,并且需要知道行数。

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

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

如果我这样做,我将无法计算所有行数。

我想知道limit with mysql our php进程速度之间有什么不同。

如果您有任何想法,请告诉我。

4

4 回答 4

3

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

*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将帮助您计算所有行数,因此您可以执行正确的分页。

于 2013-05-09T20:12:21.383 回答
2

最好的方法可能是同时使用FOUND_ROWS()和结合它们;

SELECT SQL_CALC_FOUND_ROWS * FROM tbl LIMIT 10

...因此获得前 10 行。然后你可以做;

SELECT FOUND_ROWS()

...获取如果您没有使用LIMIT.

于 2013-05-09T20:19:31.653 回答
0

据我了解您的问题,解决方案可能是这样的:严格由 mysql

  • 首先使用两个函数来计算总记录
  • 第二个获得结果
  • 从 table_name 中选择 count(1) 作为总数
  • select col1,col2.. from table_name limit $start , $slot_size

现在 slot_size 是您要在页面上显示的记录数,例如 10 start 是根据页面更改的值

于 2013-05-09T20:17:07.683 回答
0

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

于 2013-05-09T20:11:32.873 回答