Eve*_*oob 7 php mysql logic pagination
正如你们中的一些人所知,在MySQL中使用LIMIT关键字并不妨碍它阅读前面的记录.
例如:
SELECT * FROM my_table LIMIT 10000, 20;
Run Code Online (Sandbox Code Playgroud)
意味着MySQL仍将读取前10,000条记录,并在生成我们追踪的20条记录之前抛弃它们.
因此,在对大型数据集进行分页时,高页码意味着加载时间过长.
有没有人知道任何现有的分页类/技术/方法可以以更有效的方式对大型数据集进行分页,即不依赖于LIMIT MySQL关键字?
在PHP中,如果可能的话,因为这是我公司的首选武器.
干杯.
首先,如果你想分页,你绝对必须有一个ORDER BY子句.然后,您只需使用该子句深入挖掘数据集.例如,考虑一下:
SELECT * FROM my_table ORDER BY id LIMIT 20
Run Code Online (Sandbox Code Playgroud)
您将拥有前20条记录,假设它们的ID是:5,8,9,...,53,54.您到第2页的分页链接看起来像"list.php?page = 2&id = 64",您的查询将是
SELECT * FROM my_table WHERE id > 64 ORDER BY id LIMIT 20
Run Code Online (Sandbox Code Playgroud)
没有偏移,只读了20条记录.它不允许您随意跳转到任何页面,但大多数时候人们只是浏览下一个/上一页.即使使用大的OFFSET值,"id"的索引也会改善性能.