mysql和php中的限制查询之间有所不同

时间:2013-05-09 20:08:40

标签: php mysql

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

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

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

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

我想知道处理速度limit with mysql our php之间是否有任何不同。

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

最好的方法可能是使用FOUND_ROWS()并将它们组合在一起;

SELECT SQL_CALC_FOUND_ROWS * FROM tbl LIMIT 10

...得到前10行的结果。那你就可以做;

SELECT FOUND_ROWS()

...获取未使用LIMIT时可获得的总行数。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

现在slot_size是你要在页面上显示的记录数,比如说10 start是将根据页面

更改的值