MySQL Limit order by

今天写模糊查询的时候,按照时间排序并进行分页时,在mybatis的映射文件中有这样一条sql语句

 1 SELECT
 2         <include refid="Base_Column_List"/>
 3         FROM USER U
 4         WHERE U.status != #{status,jdbcType=VARCHAR}
 5         <if test="keyword != null and keyword != ‘‘">
 6             AND
 7             (
 8             U.NAME LIKE #{keyword,jdbcType=VARCHAR}
 9             OR U.USERNAME LIKE #{keyword,jdbcType=VARCHAR}
10             )
11         </if>
12         ORDER BY U.lastupdateddate DESC
13         LIMIT #{offsetNum},#{pageSize}

如果先排序后分页的话就能得到想要的结果,但是反之

SELECT
        <include refid="Base_Column_List"/>
        FROM USER U
        WHERE U.status != #{status,jdbcType=VARCHAR}
        <if test="keyword != null and keyword != ‘‘">
            AND
            (
            U.NAME LIKE #{keyword,jdbcType=VARCHAR}
            OR U.USERNAME LIKE #{keyword,jdbcType=VARCHAR}
            )
        </if>
        LIMIT #{offsetNum},#{pageSize}
        ORDER BY U.lastupdateddate DESC

这样的话就会报错。SQL的执行顺序是from where select。那我可不可以认为,在相同优先级的where条件下谁在前面谁会优先执行,而order是对查询结果的排序,而limit则是对查询结果的选择性获取;如果limit在前的话比较好的结果是对选择性获取之后的

结果再进行排序,能不能得到这样的结果应该和order by的工作机制相关。根据以上的例子显然只能先排序后做选择性获取结果。若博友能贴出官方文档解释,十分感谢~

时间: 2024-07-28 13:39:31

MySQL Limit order by的相关文章

Mysql的ORDER BY 和Limit offset的一个问题,拿出来和大家研究下

今天碰到个很怪异的问题,如题关于mysql的ORDER BY 语句和Limit offset语句问题. bug再现下:select * from A a where a.culomn1 limit 5 offset 0 order by a.culomn1 asc 则出现sqlException,提示order by 这行有问题. 若将语句改为如下,将limit语句和order by 语句调换: select * from A a where a.culomn1 order by a.culom

MySQL分页时使用 limit+order by 会出现数据重复问题

1.问题描述 在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的10条数据,limit(10,10)表示列出第二页.但是,当limit遇到order by的时候,可能会出现翻到第二页的时候,竟然又出现了第一页的记录. SELECT `post_title`, `post_date` FROM post WHERE `post_status` = 'publish' ORDER BY view_count desc LIMIT 5, 5 使用上述SQL

索引优化来实现MySQL的ORDER BY语句优化

MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度. MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作. 通过索引优化来实现MySQL的ORDER BY语句优化: 1.ORDER BY的索引优化.如果一个SQL语句形如: SELECT [column1],[column2],-. FROM [TABLE] ORDER BY [sort]; 在[sort]这个栏位上建立索引就可以实现利用索引进行order

mysql limit性能问题

offset大的时候的比较 SELECT * FROM persons LIMIT 200000,10; 耗时0.078s SELECT *FROM persons WHERE id>=(SELECT id FROM persons ORDER BY id LIMIT 200000,1) LIMIT 10 耗时0.109s why?mysql limit性能问题,布布扣,bubuko.com

Mysql LIMIT如何正确对其进行优化

Mysql LIMIT如何正确对其进行优化 2010-05-17 17:09 佚名 博客园 字号:T | T 我们今天主要和大家分享的是Mysql LIMIT简单介绍以及如何进行优化的相关内容的描述,以下就是正文的主要内容描述. AD:51CTO 网+首届APP创新评选大赛火热启动——超百万资源等你拿! 以下的文章主要是对Mysql LIMIT简单介绍,我们大家都知道LIMIT子句一般是用来限制SELECT语句返回的实际行数.LIMIT取1个或是2个数字参数,如果给定的是2个参数,第一个指定要返

Mysql limit 优化,百万至千万级快速分页,--复合索引的引用并应用于轻量级框架

MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心!MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻的小型系统怎么写都可以,用xx框架可以实现快速开发.可是数据量到了10万,百万至千 万,他的性能还能那么高吗?一点小小的失误,可能造成整个系统的改写,甚至更本系统无法正常运行!好了,不那么多废话了.用事实说话,看例子: 数据表 collect ( id, title ,info ,vtype) 就这

mysql limit分页优化

近期一个项目遇到mysql limit分页奇慢无比,查看了数量也就一百万左右,可是查询的一页数据需要两分多钟,sql语句大约是order by limit,网上的优化大概都是在索引,优化子查询这类,都一一试过,速度并没有大的提升. 后来脑洞大开,是不是order by的问题,想想一百万条数据排序应该也是很耗时间的,于是将order by删除了,果然两分半钟竟然缩短到了0.045秒.经过测试如果是单个表的查询,order by 对速度的影响不太明显,当查询和关联和子查询的时候,对速度的影响就显而易

mysql limit分页优化方法分享

MySQL的优化是非常重要的.其他最常用也最需要优化的就是limit.MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降. 同样是取10条数据 select * from yanxue8_visit limit 10000,10 和 select * from yanxue8_visit limit 0,10 就不是一个数量级别的. 网上也很多关于limit的五条优化准则,都是翻译自MySQL手册,虽然正确但不实用.今天发现一篇文章写了些关于limit优

Python MySQL Limit

章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python MySQL Where Python MySQL Order By Python MySQL Delete Python MySQL 删除表 Python MySQL Update Python MySQL Limit Python MySQL Join 限制结果数量 可以使用"LIMIT"