admin管理员组文章数量:1794759
mysql分页的几种方式
背景
在后端开发中,为了防止一次加载过多的数据造成过多的内存和磁盘IO开销,往往需要按页显示。此时,需要使用MySQL的limit关键字。当存在大量数据时,最可能由限制引起的问题之一是深度分页。
Mysql深度分页第一式:复用分页查询的特性决定了它可以有效利用上一次查询的结果,举例:
selectid, name, address, phone FROMcustomers WHEREid> 990ORDERBYidLIMIT10;通过where条件来缩小查询范围,当然不是每个查询都有id做where条件,但也可以使用其他条件:
SELECTid, username FROMcustomers WHEREusername > ‘shull@iheavy’ ORDERBYusername LIMIT10;不一定好用!
Mysql深度分页第二式:延迟联接如果想要查询第99页:
SELECTid, name, address, phone FROMcustomers ORDERBYnameLIMIT10OFFSET990;那么可以试试:
SELECTid, name, address, phone FROMcustomers INNERJOIN( SELECTidFROMcustomers ORDERBYnameLIMIT10OFFSET990) ASmy_results USING(id); Mysql深度分页第三式:维护一个页或者位置列维护一个页列
SELECTid, name, address, phone FROMcustomers WHEREpage = 100ORDERBYname;维护一个位置列
SELECTid, name, address, phone FROMcustomers WHEREplace BETWEEN990AND999ORDERBYname;麻烦的是,当您(a)插入一行(b)删除一行(c)使用update移动一行时,您需要更新该列。这可能会让页面变得凌乱。
版权声明:本文标题:mysql分页的几种方式 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686542839a79899.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论