在叶子文章中,我们讨论了使用内部
连接来减少页面的扫描,这是为了减少所谓的后台表:
复制代码代码如下所示:
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扫描来避免大量的后台操作,所以扫描了多少条(页面)