你们中的一些人可能知道,在MySQL中使用LIMIT关键字并不能阻止它读取前面的记录。
例如:
SELECT * FROM my_table LIMIT 10000, 20;这意味着MySQL仍然会读取前10,000条记录,并在生成我们想要的20条记录之前丢弃它们。
因此,在对大型数据集进行分页时,较高的页码意味着较长的加载时间。
有谁知道任何现有的分页类/技术/方法可以以更有效的方式对大型数据集进行分页,即不依赖于LIMIT MySQL关键字?
如果可能的话,用PHP编写,因为这是我公司的首选武器。
干杯。
发布于 2009-09-01 11:42:01
一种解决方案可能是不使用limit子句,而是使用连接-在用作某种序列的表上连接。
有关更多信息,我在SO上找到了这个question / answer,它提供了一个示例--可能对您有帮助;-)
发布于 2009-09-01 15:51:35
首先,如果你想分页,你一定要有一个ORDER BY子句。然后,您只需使用该子句来更深入地挖掘您的数据集。例如,考虑以下内容:
SELECT * FROM my_table ORDER BY id LIMIT 20你会有前20条记录,假设他们的id是: 5,8,9,...,55,64。指向第2页的分页链接将类似于"list.php?page=2&id=64“,查询将为
SELECT * FROM my_table WHERE id > 64 ORDER BY id LIMIT 20无偏移量,仅读取20条记录。它不允许你随意跳转到任何页面,但大多数时候人们只是浏览下一个/上一个页面。"id“上的索引将提高性能,即使有很大的偏移量。
发布于 2009-09-01 11:43:15
基本上有3种方法,每种方法都有自己的权衡:
https://stackoverflow.com/questions/1361969
复制相似问题