通过PHP与MySQL进行分页的最佳实践?
在处理至少100万行的记录时,在性能方面,是否最好: 选择整个记录,例如,通过PHP与MySQL进行分页的最佳实践?,php,mysql,performance,pagination,Php,Mysql,Performance,Pagination,在处理至少100万行的记录时,在性能方面,是否最好: 选择整个记录,例如,Select*FROM tbl然后使用array\u chunk()或array\u slice() 或 仅选择记录的一部分,例如,Select*FROM tbl LIMIT x每页?最好使用LIMIT。想想看。。即使您有1000000行,第一个也将获得所有。vs限制,每次只能获取您设定的号码 然后,您需要确保正确设置了偏移量,以便从表中获取下一组项目。最好使用“限制”。想想看。。即使您有1000000行,第一个也将获得所
Select*FROM tbl
然后使用array\u chunk()
或array\u slice()
或
仅选择记录的一部分,例如,
Select*FROM tbl LIMIT x
每页?最好使用LIMIT。想想看。。即使您有1000000行,第一个也将获得所有。vs限制,每次只能获取您设定的号码
然后,您需要确保正确设置了偏移量,以便从表中获取下一组项目。最好使用“限制”。想想看。。即使您有1000000行,第一个也将获得所有。vs限制,每次只能获取您设定的号码
然后,您需要确保正确设置了偏移量,以便从表中获取下一组项目。我认为这取决于情况,如果表不太大,您可以使用memcache将整个响应存储在内存中,这样可以避免HDD请求,这会更耗时,但由于您不知道用户是否会查找大量页面,因此最好使用SQL进行限制。我认为这取决于情况,如果您的表不太大,您可以使用memcache将整个响应存储在内存中,这样可以避免更耗时的HDD请求,但您不知道用户是否会查找大量页面,最好用SQL来限制它。这取决于具体情况
这真的取决于你的需要。最好的方法取决于你的环境。如果选择直接使用数据库,请注意以下问题: 当您进入后面的页面时,NaiveLimit方法会给您带来问题。按某个键限制偏移量排序,页面大小的工作方式如下-遍历键,遍历第一个偏移量记录,然后返回页面大小记录。所以检查了偏移量+页面大小记录,如果偏移量高,则会出现问题 更好-记住当前页面的最后一个键值。获取下一页时,请按如下方式使用:
SELECT * FROM tbl WHERE the_key > $last_key ORDER BY the_key ASC LIMIT $page_size
如果您的密钥不唯一,请通过在末尾添加额外的唯一ID列使其唯一。最佳方法取决于您的上下文。如果选择直接使用数据库,请注意以下问题: 当您进入后面的页面时,NaiveLimit方法会给您带来问题。按某个键限制偏移量排序,页面大小的工作方式如下-遍历键,遍历第一个偏移量记录,然后返回页面大小记录。所以检查了偏移量+页面大小记录,如果偏移量高,则会出现问题 更好-记住当前页面的最后一个键值。获取下一页时,请按如下方式使用:
SELECT * FROM tbl WHERE the_key > $last_key ORDER BY the_key ASC LIMIT $page_size
如果您的密钥不唯一,请在末尾添加一个额外的唯一ID列,使其唯一。这实际上取决于上下文 通常,您希望大量使用索引来从一个大数据集中快速选择所需的内容。通过编程语言分页也比使用数据库更快。数据库经常会遇到瓶颈。对于一个每分钟有100个查询的应用程序,我们必须这样做。需要限制对数据库的点击,因此我们需要返回数据集,这些数据集可能不需要再查询数据库,大约100个结果,然后在应用程序中按25分页
通常,使用这些索引对结果进行索引和缩小范围,如果性能是db上大量活动的关键,则调整db和代码,通过在应用程序中分页来减少I/O和db命中率。当服务器负载为12而I/O使用率为20时,您就会知道为什么。你需要点击手术台的状态 这实际上取决于上下文 通常,您希望大量使用索引来从一个大数据集中快速选择所需的内容。通过编程语言分页也比使用数据库更快。数据库经常会遇到瓶颈。对于一个每分钟有100个查询的应用程序,我们必须这样做。需要限制对数据库的点击,因此我们需要返回数据集,这些数据集可能不需要再查询数据库,大约100个结果,然后在应用程序中按25分页
通常,使用这些索引对结果进行索引和缩小范围,如果性能是db上大量活动的关键,则调整db和代码,通过在应用程序中分页来减少I/O和db命中率。当服务器负载为12而I/O使用率为20时,您就会知道为什么。你需要点击手术台的状态 @RyanVincent因为性能是主题,所以假设记录很大。@RyanVincent你为什么一直删除你的记录comments@RyanVincent因为性能是主题,所以假设记录较大。@RyanVincent为什么要不断删除注释,这比使用
偏移量
要好。是的,这比使用偏移量要好。