今天遇到个奇葩的问题,

sql 数据量很大 有where 和order by,不加order by 速度很快,加了就很慢

一、首先我们对这条sql执行查询计划:

 explain select t.order_id from book_order t  ORDER BY t.order_id desc 

explain select t.order_id from book_order t 

这条语句应用的索引是idx_bo_order_book_local

进一步确定,再对使用where条件后,索引变成了主键。

explain select t.order_id from book_order t where t.order_id = 1593539

通过以上的情况可以看出:

MySQL默认的查询(没有where条件),不一定使用主键,由于MySQL的每一条简单查询只应用一个索引,所以,这个时候使用order by 主键,主键的索引功能失效。

二:解决办法

1、order by 索引(where条件中引用的索引)。

2、强制使用主键:FORCE INDEX(PRI),如果想强制使用索引,则用FORCE INDEX(索引名)。

 explain select t.order_id from book_order t FORCE INDEX(idx_bo_order_book_local) ORDER BY t.order_id desc;

三、其他order by 索引失效的原因分析

1、MySQL每天一条简单语句只应用一个索引,所以order by的字段要在索引之中,并且和where条件可以合并成组合索引。

2、select的字段,必须是索引字段。(主键查询除外)

3、如果sql语句为复合语句,包含子查询等,可以把语句分解成简单查询来分析。

转载于:https://www.cnblogs.com/yizhiamumu/p/9004550.html

MySQL数据库order by 奇慢无比相关推荐

  1. update 追加某个字段的内容和mysql数据库怎么判断查奇偶数

    1.update 追加某个字段的内容 update 表名 set 字段名 = concat(字段名,"string") UPDATE daysky SET jianyao=CONC ...

  2. mysql count order by_【数据库】mysql中count(), group by, order by使用方法分享

    本文主要和大家分享mysql中count(), group by, order by使用方法,mysql中order by 排序查询.asc升序.desc降序,group by 分组查询.having ...

  3. MySQL数据库如何解决大数据量存储问题

    FROM http://blog.csdn.net/likika2012/article/details/38816037 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存 ...

  4. PHP ----MySQL 数据库

    <MySQL数据库操作> 1.创建数据库. 在MySQL中应用 create database 语句创建数据库.格式如下: create database db_name; db_name ...

  5. php面试题之五——MySQL数据库(基础部分)

    五.MySQL数据库 mysql_num_rows() mysql_affected_rows() 这两个函数都作用于 mysql_query($query)操作的结果,mysql_num_rows( ...

  6. mysql数据库优化大全_MySQL数据库优化技巧大全

    简介: MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进 ...

  7. MySQL数据库优化技巧大全

    简介:MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行 ...

  8. MySQL数据库优化技巧

    1. 使用EXPLAIN 使用EXPLAIN关键字可以帮助我们分析select语句,让我们知道查询效率低下的原因,从而改进我们查询,让查询优化器能够更好的工作. 基本思路 一定要注意看执行计划里的 p ...

  9. 从csv文件中导入数据到MySQL数据库

    从csv文件中导入数据到MySQL数据库 转: 一.Workbench客户端导入(8.0.11基本导不全且速度奇慢) 1.点击如下图标创建数据库(非必要) 2.在表类上右键导入 二.SQL语句导入(可 ...

最新文章

  1. zabbix如何监控WEB应用性能
  2. 关于合成的拷贝控制成员的一点问题
  3. HTTP Cookie详解
  4. MySQL DBA必备:MySQL 5.7升级8.0过程(全)
  5. Python基础(五)
  6. vue 指令 v-on 事件修饰符-鼠标事件-什么是事件冒泡
  7. 嵌入式linux实验一vim的使用,嵌入式Linux C语言开发工具—vi/vim实训操作
  8. JAVA字节流,字符流
  9. Atitit Atitit.软件兼容性原理----------API兼容 Qa7
  10. 达芬奇--艺工结合先驱
  11. 配置HRFormer:High-Resolution Transformer for Dense Prediction条件
  12. 面向对象与面向过程(尚学堂视频学习总结_001)
  13. 详解木瓜移动终止上市:深交所提出47问,涉定位不清、业绩下滑
  14. 【技法操作】UI界面设计教程,用PS绘制计算器页面
  15. CSS实现反方向圆角
  16. “白发”位置竟暗示五脏六腑健康状况
  17. 基于JAVA个人交友网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署mp4
  18. 系统高可用之健康检查和健康度量那些事
  19. 50、诗句按照特定个数输出
  20. 新玺配资:煤超风利空来袭 行情会结束吗?

热门文章

  1. Linux C语言实现ls -l
  2. Pycharm使用matplotlib绘图时无法显示中文问题
  3. LeetCode 2129. 将标题首字母大写
  4. LeetCode 875. 爱吃香蕉的珂珂(二分查找)
  5. LeetCode 811. 子域名访问计数
  6. LeetCode 284. 顶端迭代器
  7. 程序员面试金典 - 面试题 04.06. 后继者(循环中序遍历)
  8. LeetCode 45. 跳跃游戏 II(贪心/BFS,难)
  9. ajax和rxjs,javascript – RxJS 5 Observable和Angular2 http:调用ajax一次,保存结果,随后的ajax调用使用缓存结果...
  10. 公安计算机技能测试题库,2018公安文职考试题库:行政职业能力测验