MySQL数据-实现分页的最佳方法?

MySQL数据-实现分页的最佳方法?

我的iPhone应用程序连接到我的PHPWeb服务,从MySQL数据库中检索数据。一个请求可以返回500个结果。

实现分页和一次检索20个项的最佳方法是什么?

假设我从我的数据库收到了前20个广告。现在我怎样才能要求接下来的20个广告呢?


桃花长相依
浏览 546回答 3
3回答

Qyouu

来自MySQL文档:限制子句可用于限制SELECT语句返回的行数。极限使用一个或两个数值参数,这两个参数都必须是非负整数常量(除非使用准备好的语句)。使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。第一行的偏移量为0(而不是1):SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15要从某个偏移量中检索到结果集末尾的所有行,可以为第二个参数使用一些较大的数字。此语句检索第96行到最后一行的所有行:SELECT * FROM tbl LIMIT 95,18446744073709551615;使用一个参数,该值指定从结果集开始返回的行数:SELECT * FROM tbl LIMIT 5;     # Retrieve first 5 rows换句话说,限制行_计数等于极限0,行_计数。

海绵宝宝撒

对于500条记录,效率可能不是问题,但是如果您有数百万条记录,那么使用WHERE子句来选择下一页可能是有利的:SELECT *FROM yourtableWHERE id > 234374ORDER BY id LIMIT 20这里的“234374”是您查看的Preous页面上最后一条记录的ID。这将使id上的索引可用于查找第一条记录。如果你用LIMIT offset, 20你可能会发现,当你在最后一页的时候,它会变得越来越慢。正如我所说的,如果您只有200条记录,这可能并不重要,但它可以与更大的结果集有所不同。这种方法的另一个优点是,如果调用之间的数据发生了变化,则不会丢失记录或得到重复的记录。这是因为添加或删除行意味着所有行的偏移量在更改后都会更改。在你的例子中,这可能并不重要-我想你的广告库不会经常变化,而且无论如何也不会-如果它们连续两次得到相同的广告,人们会注意到-但是如果你在寻找“最佳方式”,那么在选择使用哪种方法时,这是另一件需要记住的事情。如果您确实希望在偏移量中使用限制(如果用户直接导航到页10000而不是一个接一个地分页,这是必要的),那么您可以阅读本文迟行查找通过较大的偏移量来提高极限的性能。

慕仙森

定义偏移量用于查询。例如第1页-(记录01-10):偏移量=0,极限=10;第2页-(记录11-20)偏移量=10,极限=10;并使用以下查询:SELECT column FROM table LIMIT {someLimit} OFFSET {someOffset};例如第2页:SELECT column FROM tableLIMIT 10 OFFSET 10;
打开App,查看更多内容
随时随地看视频慕课网APP