最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQLHINT:Straight_JOIN_MySQL

来源:动视网 责编:小采 时间:2020-11-09 18:37:59
文档

MySQLHINT:Straight_JOIN_MySQL

MySQLHINT:Straight_JOIN_MySQL:bitsCN.com MySQL HINT:Straight_JOIN 来自生产环境的朋友、可能都会碰到: 原本运行良好的查询语句,过了一段时间后,可能会突然变得很糟糕 一个很大可能的原因就是数据分布情况发生了变化 从而导致MySQL优化器对驱动表的选择发生了变化,进而出现索引失
推荐度:
导读MySQLHINT:Straight_JOIN_MySQL:bitsCN.com MySQL HINT:Straight_JOIN 来自生产环境的朋友、可能都会碰到: 原本运行良好的查询语句,过了一段时间后,可能会突然变得很糟糕 一个很大可能的原因就是数据分布情况发生了变化 从而导致MySQL优化器对驱动表的选择发生了变化,进而出现索引失


bitsCN.com

MySQL HINT:Straight_JOIN

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

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

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

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

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

这个时候、Straight_JOIN 闪亮登场

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

http://www.bitsCN.com/database/201301/186885.html

和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」

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

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

bitsCN.com

文档

MySQLHINT:Straight_JOIN_MySQL

MySQLHINT:Straight_JOIN_MySQL:bitsCN.com MySQL HINT:Straight_JOIN 来自生产环境的朋友、可能都会碰到: 原本运行良好的查询语句,过了一段时间后,可能会突然变得很糟糕 一个很大可能的原因就是数据分布情况发生了变化 从而导致MySQL优化器对驱动表的选择发生了变化,进而出现索引失
推荐度:
标签: 朋友 mysql mysq
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top