Mysql的limit用法.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Mysql的limit用法

1、Mysql的limit用法?在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。?Sql代码??SELECT?*?FROM?table?LIMIT?[offset,]?rows?|?rows?OFFSET?offset???LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1):为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。?Sql代码??mysql?SELECT?*?FROM?table?LIMIT?5,10;?//?检索记录行?6-15????//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为?-1:???mysql?SELECT?*?FROM?table?LIMIT?95,-1;?//?检索记录行?96-last.????//如果只给定一个参数,它表示返回最大的记录行数目:???mysql?SELECT?*?FROM?table?LIMIT?5;?//检索前?5?个记录行????//换句话说,LIMIT?n?等价于?LIMIT?0,n。???? ? 【引用,路人乙:Mysql中limit的用法详解】?2、Mysql的分页查询语句的性能分析??  ? ? MySql分页sql语句,如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。使用它来分页是再自然不过的事情了。?2.1最基本的分页方式:?Sql代码?????SELECT?...?FROM?...?WHERE?...?ORDER?BY?...?LIMIT?...????在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引:举例来说,如果实际SQL类似下面语句,那么在category_id, id两列上建立复合索引比较好:?Sql代码??SELECT?*?FROM?articles?WHERE?category_id?=?123?ORDER?BY?id?LIMIT?50,?10?????2.2子查询的分页方式:?随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:Sql代码??SELECT?*?FROM?articles?WHERE?category_id?=?123?ORDER?BY?id?LIMIT?10000,?10????一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。此时,我们可以通过子查询的方式来提高分页效率,大致如下:Sql代码??SELECT?*?FROM?articles?WHERE??id?=???(SELECT?id?FROM?articles??WHERE?category_id?=?123?ORDER?BY?id?LIMIT?10000,?1)?LIMIT?10????2.3JOIN分页方式?Sql代码??SELECT?*?FROM?`content`?AS?t1???JOIN?(SELECT?id?FROM?`content`?ORDER?BY?id?desc?LIMIT?.($1)*$pagesize.,?1)?AS?t2???WHERE?t1.id?=?t2.id?ORDER?BY?t1.id?desc?LIMIT?$pagesize;?????? ??经过我的测试,join分页和子查询分页的效率基本在一个等级上,消耗的时间也基本一致。explain SQL语句:id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY derived2 system NULL NULL NULL NULL 1 ?1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 Using where2 DERIVED content index NULL PRIMARY 4 NULL 27085 Using index??为什么会这样呢?因为子查询是在索引上完成的,而普通的查询时在数据文件上完成的,通常来说,索引文件要比数据文件小得多,所以操作起来也会更有效率。?实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。【引用原文,energy1010的空间:MySql分页sql语句】??3、Oracle分页查询语

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档