MySQL高级分页(高级mysql分页)

MySQL高级分页(高级mysql分页)
在叶子文章中,我们讨论了使用内部连接来减少页面的扫描,这是为了减少所谓的后台表:

复制代码代码如下所示:

SELECT * FROM ` T1 `内连接(选择ID从` T1 `通过id倒序)
通过直接操作ID而不是整个表,id连接被条件ID抓取,然后数据通过id进行爬行,从而避免了不需要的页面的扫描。

但这不是减少ID范围范围的最佳方法,例如:

我们得把100个记录分成一页来写。
复制代码代码如下所示:

page_size美元= 100选择*从那里通过ID ASC限制page_size美元标识>序。
尽量避免限制m和n。这种写MySQL的方式非常不人道。当m值很大,偏移量很小时,尽量不要使用偏移量来获得特定的行数。

这里有一个问题,例如,根据不是唯一索引的列页,可能存在问题。例如,当一列列1有11键= 100的值,则最小值后限制n值相同的利用你。

你如何处理这种情况举个例子:

例如,每10条记录应分为一页。
复制代码代码如下所示:

SELECT * FROM t为column1 DESC LIMIT 10
请注意,这里的最小值或100(11连续100)会对下列分页产生影响,以及如何处理它

雅虎给出的解决方案非常适合取额外的列,例如PK或唯一索引键,例如:
复制代码代码如下所示:

SELECT * FROM t为column1降序,ID DESC LIMIT 10——第一页

SELECT * FROM t其中column1 <= minvalue_col1和(ID<minvalue_id或column1 < minvalue_col1)10 --二页
这确保了唯一性,确保每个页面的数据不会重复。这个想法得到了额外的边界值增加,并与列分页,额外的。

SQL也可以优化
复制代码代码如下所示:

选择平方米。*从M1,M2,不m1.id = m2.id和m1.column1 <= minvalue_col1

和(m1.id < minvalue_id或m1.column1 < minvalue_col1)的m1.column1倒序,m1.id desc 10;
核心思想:通过额外的过滤和ID扫描来避免大量的后台操作,所以扫描了多少条(页面)
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部