`

Limit的使用

阅读更多

 

LIMIT的原理:

                      这里以LIMIT N,M为基础:LIMIT首先要找查N+M行,然后从N行处,取M行。那么这样的SQL对一次查询1275500一个操作应该是一个昂贵的开销。对于LIMIT这类的优化,第一个目标就是让N变的尽可能的小或是不用。    

三种常用的类型:

第一种:显示“上一页” “下一页”这种类型

         第一页:

                    SELECT *FROM TABLE WHERE UID='48' ORDER BY POSTDATE DESC LIMIT 20; 

         第二页:根据第一页的postdate进行查询如:

SELECT *FROM TABLE WHERE UID='48' AND POSTDATE<'2009-11-3'  ORDER BY POSTDATE DESC LIMIT 20;    

        

第二种:显示 “ 1,2,3,4,5…”

         第一页和第二页实现同上,如从第二页跳到第5页

SELECT *FROM TABLE WHERE UID='48' AND POSTDATE<'2009-11-3'  ORDER BY POSTDATE DESC LIMIT 40,20;    

        看到这里明白为什么大型网站的分页不是一下标识出来完了,让都能点了吧。也不会给你一个框让你输入一个页跳过去了。如果跳的页面过多,也就存在N值过大的问题了。所以要想办法避免。

第三种:显示 “1,2,3,4,5,…. 末页” 或是 “首页,<<100,101,102,103 >>末页”

别的页面的跳转的上面一样。这里就加一个末页

SELECT *FROM TABLE WHERE UID='48' ORDER BY POSTDATE ASC LIMIT 20; 如果在条件可能和情况可以考用:between … and .. 带代替limit分页操作。

 

简单的逻辑转换。

SELECT *FROM TABLE WHERE UID='48' ORDER BY POSTDATE DESC LIMIT 127654,20;

转换成:

SELECT *FROM TABLE WHERE ID>127654 AND UID='48' ORDER BY POSTDATE DESC LIMIT 7654,20;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics