来自生产环境的朋友、可能都会碰到:

原本运行良好的查询语句,过了一段时间后,可能会突然变得很糟糕

一个很大可能的原因就是数据分布情况发生了变化

从而导致MySQL优化器对驱动表的选择发生了变化,进而出现索引失效的情况

所以、闲着蛋疼喝咖啡的时候、应该多收集两下表的统计信息

这个时候、Straight_JOIN 闪亮登场

MySQL 只支持 Nested Loop Join、关于这个Nested JOIN的详细用法请参阅偶之前blog:点击打开链接

和Oracle对比下、不然得知、Straight_JOIN相当于Oracle里面的:USE_NL、所以、原理和适用上大概都是相同的、

不过、对于驱动表的选择、MySQL 优化器可能没有Oracle那般智能、MySQL采用简单粗暴的方法:

哪个表的结果集小,就以哪个表为驱动表偶赶脚有2 种原因可令你选择 Straight_JOIN

① MySQL 优化器不给力、错误选择驱动表

② Nested Loop Join 的适用场景:

==>一般用在连接的表中有索引,并且索引选择性较好(也就是Selectivity接近1)的时候

==>也就是驱动表的记录集比较小(<10000)而且inner表需要有有效的访问方法(Index)

一般的优化操作:

① show full processlist; <===查找TOP-SQL

② explain + TOP-SQL ; <===查询SQL 执行计划

注意:在EXPLAIN结果中,第一行出现的表就是驱动表

一个经典优化例子:

当explian输出结果中含:「Using filesort」,甚至「Using temporary」

我们就该擦亮双眼、像打了鸡血一样、保持时刻优化的姿态

此刻的优化就容易多了、尽可能保证排序字段在驱动表中

By David Lin

2013-06-23

Good Luck

mysql hint 驱动_MySQL HINT:Straight_JOIN相关推荐

  1. mysql odbc 驱动_mysql odbc驱动 mysql odbc connector

    mysql odbc connector又名<mysql odbc驱动>,MySQL Connector ODBC是一个有效且实用的ODBC连接器,安装后它允许您将应用程序连接到MySQL ...

  2. mysql odbc 驱动_mysql odbc驱动 32位 下载

    mysql odbc驱动 32位可以解决链接驱动问题,虽然是旧版的mysql,不过很多人都在找,如果连接MySQL时,提示安装ODBC驱动, MyODBC之类的,错误提示,安装 MySQL ODBC ...

  3. mysql 注册驱动_Mysql注册驱动三种方法 | 学步园

    考量了许久,决定把最近学的jdbc坐下总结,慢慢来吧,一天总结一小点,既然拖了那么久. 好,下面开始总结.(这里以mysql数据库为例) 首先就要说的是jdbc中注册驱动,首先导入对应的包,例如mys ...

  4. mysql 的驱动是多少_mysql驱动参数变化

    在java平台使用的mysql jdbc驱动为:mysql-connector-java. 在项目中添加如下依赖: mysql mysql-connector-java ${version.mysql ...

  5. linux mysql odbc驱动安装_MySQL ODBC 驱动安装

    阅读目录 一.在线安装 1.yum在线安装驱动 2.配置驱动 3.测试连接 二.编译安装 1.MySQL创建测试用户和测试库 2.安装驱动 3.配置驱动 4.测试 一.在线安装 1.yum在线安装驱动 ...

  6. jdbc版本低MySQL版本高_Mysql JDBC驱动版本与Mysql版本的对应问题解决

    好长时间不用Mysql了, 昨天朋友有一个小项目在我的机器上跑的一点问题都没有, 到他的机器上却是报服务器内部错误(500), 用QQ上远程协助(太慢 好长时间不用Mysql了, 昨天朋友有一个小项目 ...

  7. oracle mysql sqlserver对比_Mysql、Oracle、SqlServer的JDBC连接实现和对比(提供驱动包)...

    首先,我们需要准备数据库连接所需的jar包.目前mysql的驱动包可能比较好找,但是oracle和sqlserver的有很多,要找到能用的要花一点点心思,这里直接把下载地址和版本发送出来. Mysql ...

  8. 【MySQL】性能优化之 straight_join

       研究过或者熟悉oracle性能调优的朋友都知道oracle 提供很多hint 指定from 后的表的连接顺序,如use_hash  ordered ,leading 等,而MySQL 对表的连接 ...

  9. mysql优化 坑_mysql之我们终将踩过的坑(优化)

    一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型.一个好的sql语句至少 ...

  10. oracle 强制索引 hint,oracle常用hint详解

    相对而言ORACLE优化器已经非常智能,产生的执行计划也是最优的,但是ORACLE还是提供了一些hint供用户显示的控制执行计划,因为大千世界各种各样的业务都有,ORACLE优化器生成的执行计划并不一 ...

最新文章

  1. 小程序生命周期_来,简单说说小程序的生命周期?
  2. SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证?
  3. ASP.NET页面生命周期描述
  4. 进度条控制(Windows 公共进度栏控件的功能)
  5. 漂亮的不太像手机!三星Galaxy S11最新渲染图曝光
  6. Cs Tip19: 高亮Blog Owner的评论
  7. JAVA:泛型通配符T,E,K,V区别,T以及Class,Class的区别
  8. mybatis实体类类型别名
  9. 各种版本mysql驱动包下载地址
  10. winrar中文版去广告的方法,以winrar5.70简体中文版为例(其他版本也类似)
  11. Mybatis3.5.4官网下载
  12. wifi物理地址怎么改_安卓手机修改wifi物理mac地址的三种方法
  13. 非平衡电桥电阻计算_用非平衡电桥如何测量电阻_非平衡电桥测量电阻详解
  14. Linux系统基础命令详细总结,不定期更新,建议收藏
  15. 数据安全建设的准绳和参考标准
  16. android 配置aspect_Android全面屏适配
  17. 微信小程序数组更新,但视图不更新的问题
  18. LVS 引入keepalived自动切换机制
  19. MySQL中常见的日志文件
  20. MATLAB实现层次分析法AHP及案例分析

热门文章

  1. css3,环绕圆环 loading,小组件
  2. 无线通信与编码_MATLAB实现OFDM载波频偏估计_含仿真代码
  3. ajax向后台传递参数为对象实例
  4. Windows 10搭建FTP服务器
  5. JMC | 基于机器学习精确预测激酶抑制剂结合模式
  6. golang:同个包下不同文件不能互相调用函数
  7. Pandas 那些年踩过的坑
  8. c语言解一元一次方程(及一元高次方程)
  9. 弦截法 解高次方程 C语言/C++
  10. linux smb 添加用户,samba创建新用户