MySQL HINT:Straight_JOIN
来自生产环境的朋友、可能都会碰到:
原本运行良好的查询语句,过了一段时间后,可能会突然变得很糟糕
一个很大可能的原因就是数据分布情况发生了变化
从而导致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:Straight_JOIN相关推荐
- mysql基础搭建_MySql基础-构建MySql数据库:安装MySql-server、MySql-client
1 构建MySQL服务器 1.1 问题 本案例要求熟悉MySQL官方安装包的使用,快速构建一台数据库服务器: 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 ...
- mysql 1449 : The user specified as a definer ('root'@'%') does not exist
在项目中修改数据,后台报错: mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决:原因是你对数据中一 ...
- mysql七:视图、触发器、事务、存储过程、函数
阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...
- mysql体系结构:
mysql体系结构: 由:连接池组件.管理服务和工具组件.sql接口组件.查询分析器组件.优化器组件. 缓冲组件.插件式存储引擎.物理文件组成. mys ...
- MySQL数据库:SQL语句
MySql数据库系列阅读 MySQL数据库 MySQL数据库:SQL语句 MySQL数据库:完整性约束 MySQL数据库备份与还原 MySQL数据库:编码 1. SQL概述 1.1 什么是SQL SQ ...
- Mysql实战:主从同步
在两台机器上安装MySQL.主机地址分别为: Master:192.168.11.104 Slave:192.168.11.103 启动mysql服务:/etc/init.d/mysql start ...
- mysql优化说出九条_技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢?
原标题:技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢? 背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 ...
- MySQL内核:InnoDB存储引擎 卷1
MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...
- MySQL数据库:事务和ACID实现原理
一.什么是事务: 数据库的事务是并发控制的基本单位,是指逻辑上的一组操作,要么全部执行,要么全部不执行. 1.事务的特性: (1)原子性:事务是一个不可分割的工作单元,事务里的操作要么都成功,要么都失 ...
最新文章
- Odoo 学习 【二】Environment 概览
- 探索“老药新用”最短路径:亚马逊AI Lab开源大规模药物重定位知识图谱DRKG
- 【Android 面试基础知识点整理】
- python语句讲解_python语句讲解_python语句讲解
- python opencv-4.1.0 cv::HersheyFonts 文字类型
- linux 安装 memcached
- CRM 里面table download to excel的实现
- php 405跳转,php – 返回HTTP 405的CORS预检请求
- 史上最全换档讲解手动档汽车的换挡技巧
- 虚拟专题:联邦学习 | 联邦可视化:一种隐私保护的可视化新模型
- AI 时代,为什么程序员很贵?
- 职务作品的著作权归属情况分析
- 2. PDO 的使用
- PIC温控器c语言程序,PIC CCS C语言程序范例.doc
- Qt Creator使用clang-format格式化代码
- 2011中国 · 移动开发者大会侧记
- 字幕集合保存为srt文件
- 棋牌PHP域源码,微信棋牌源码下载( h5.super-mans。com Q:2012035031)
- mysql写出总分最高的学生姓名_编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数...
- 单链表的头插法与尾插法详解