iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL5.7中select半连接优化的示例分析
  • 636
分享到

MySQL5.7中select半连接优化的示例分析

2024-04-02 19:04:59 636人浏览 安东尼
摘要

这篇文章主要为大家展示了“Mysql5.7中select半连接优化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql5.7中selec

这篇文章主要为大家展示了“Mysql5.7中select半连接优化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql5.7中select半连接优化的示例分析”这篇文章吧。

 Mysql的子查询一直以来都是性能差的著称,解决方法是以join代替。
 MySQL5.5版本中该查询先把accessLog表中版本为2.2的数据线过滤出来,然后每个符合条件的数据都与内表进行一次select id from accessLog_01,因此性能低下。MySQL5.5采取的解决方法是将in重写为exists。
 在MySQL5.6/5.7版本中,子查询执行计划是将in/exists重写为join,如下看执行计划:

点击(此处)折叠或打开

  1. mysql> select version();

  2. +------------+

  3. | version() |

  4. +------------+

  5. | 5.7.18-log |

  6. +------------+

点击(此处)折叠或打开

  1. mysql> explain select * from accessLog ac where ac.id in (select id from accessLog_01);

  2. +----+--------------+--------------+------------+--------+---------------+---------+---------+----------------+------+----------+-------+

  3. | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

  4. +----+--------------+--------------+------------+--------+---------------+---------+---------+----------------+------+----------+-------+

  5. | 1 | SIMPLE | <subquery2> | NULL | ALL | NULL | NULL | NULL | NULL | NULL | 100.00 | NULL |

  6. | 1 | SIMPLE | ac | NULL | eq_ref | PRIMARY | PRIMARY | 8 | <subquery2>.id | 1 | 100.00 | NULL |

  7. | 2 | MATERIALIZED | accessLog_01 | NULL | ALL | NULL | NULL | NULL | NULL | 1305 | 100.00 | NULL |

  8. +----+--------------+--------------+------------+--------+---------------+---------+---------+----------------+------+----------+-------+

点击(此处)折叠或打开

  1. mysql> explain select * from accessLog ac where exists (select * from accessLog_01);

  2. +----+-------------+--------------+------------+------+---------------+------+---------+------+--------+----------+-------+

  3. | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

  4. +----+-------------+--------------+------------+------+---------------+------+---------+------+--------+----------+-------+

  5. | 1 | PRIMARY | ac | NULL | ALL | NULL | NULL | NULL | NULL | 586090 | 100.00 | NULL |

  6. | 2 | SUBQUERY | accessLog_01 | NULL | ALL | NULL | NULL | NULL | NULL | 1305 | 100.00 | NULL |

  7. +----+-------------+--------------+------------+------+---------------+------+---------+------+--------+----------+-------+

点击(此处)折叠或打开

  1. mysql> explain select ac.* from accessLog ac join accessLog_01 b on ac.id=b.id;

  2. +----+-------------+-------+------------+--------+---------------+---------+---------+--------------+------+----------+-------+

  3. | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

  4. +----+-------------+-------+------------+--------+---------------+---------+---------+--------------+------+----------+-------+

  5. | 1 | SIMPLE | b | NULL | ALL | NULL | NULL | NULL | NULL | 1305 | 100.00 | NULL |

  6. | 1 | SIMPLE | ac | NULL | eq_ref | PRIMARY | PRIMARY | 8 | xinhost.b.id | 1 | 100.00 | NULL |

  7. +----+-------------+-------+------------+--------+---------------+---------+---------+--------------+------+----------+-------+

  办连接查询优化默认开启,通过show variables like 'optimizer_switch' \G查询:

点击(此处)折叠或打开

  1. mysql> show variables like 'optimizer_switch' \G

  2. *************************** 1. row ***************************

  3. Variable_name: optimizer_switch

  4.         Value: index_merge=on,index_merge_uNIOn=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on

  5. 1 row in set (0.01 sec)

  但是半连接优化只是针对查询,对于DML操作,性能依旧很差。

以上是“MySQL5.7中select半连接优化的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL5.7中select半连接优化的示例分析

本文链接: https://www.lsjlt.com/news/62539.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL5.7中select半连接优化的示例分析
    这篇文章主要为大家展示了“MySQL5.7中select半连接优化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL5.7中selec...
    99+
    2024-04-02
  • HTML中select控件美化的示例分析
    这篇文章主要为大家展示了“HTML中select控件美化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML中select控件美化的示例分析”这篇文...
    99+
    2024-04-02
  • MySQL5.7数据库中表连接、子查询、外键的示例分析
    小编给大家分享一下MySQL5.7数据库中表连接、子查询、外键的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!文章目录表连接自关联外键内连接左连接右连接子查询外键介绍创建表时设置外...
    99+
    2024-04-02
  • SQL中自连接的示例分析
    这篇文章给大家分享的是有关SQL中自连接的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。自连接是什么那我们如何理解自连接呢自连接说白了其实就是两张表结构和数据内容完全一样...
    99+
    2024-04-02
  • mysql中limit优化的示例分析
    小编给大家分享一下mysql中limit优化的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!    ...
    99+
    2024-04-02
  • MySQL中table_cache优化的示例分析
    这篇文章主要介绍MySQL中table_cache优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!table_cache指定表高速缓存的大小。每当MySQL访问一个表时,...
    99+
    2024-04-02
  • Mysql中select加锁的示例分析
    这篇文章将为大家详细讲解有关Mysql中select加锁的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引言大家在面试中有没遇到面试官问你下面六句Sql的区别呢select *...
    99+
    2023-06-02
  • MySQL中多表连接的示例分析
    这篇文章主要介绍MySQL中多表连接的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!连接可用于查询,更新,建立事实外键(指人为建立的两张表的对应关系,相对的,FORGIEN ...
    99+
    2024-04-02
  • Redis中连接错误的示例分析
    这篇文章主要介绍Redis中连接错误的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言最近由于流量增大,redis 出现了一连串错误,比如:LOADING Redis is...
    99+
    2024-04-02
  • MySQL中InnoDB MRR优化的示例分析
    这篇文章将为大家详细讲解有关MySQL中InnoDB MRR优化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言MRR 是 Multi-Range Read ...
    99+
    2024-04-02
  • PostgreSQL中查询优化的示例分析
    小编给大家分享一下PostgreSQL中查询优化的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、总体说明下面是PG源码目录(/src/backend/optimizer)中的R...
    99+
    2024-04-02
  • Mysql优化之Zabbix分区优化的示例分析
    这篇文章主要介绍了Mysql优化之Zabbix分区优化的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用zabbix最大的瓶颈在于...
    99+
    2024-04-02
  • mysql连接慢的示例分析
    小编给大家分享一下mysql连接慢的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一个同事今天反应公司的mysql机器反...
    99+
    2024-04-02
  • Oracle优化器的示例分析
    这篇文章主要介绍Oracle优化器的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、优化器的模式      优化器的模式用...
    99+
    2024-04-02
  • mysql hint优化的示例分析
    这篇文章将为大家详细讲解有关mysql hint优化的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。SELECT t.oldcontract...
    99+
    2024-04-02
  • SQL中各种连接Join的示例分析
    这篇文章给大家分享的是有关SQL中各种连接Join的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN...
    99+
    2024-04-02
  • Linux中删除软连接的示例分析
    小编今天带大家了解Linux中删除软连接的示例分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux中删除软连接的示例分析”的...
    99+
    2023-06-28
  • mysql中慢查询优化的示例分析
    这篇文章主要介绍mysql中慢查询优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一个用户反映线上一个SQL语句执行时间慢得无法接受。SQL语句看上去很简单(本文描述中修...
    99+
    2024-04-02
  • MySQL中SQL语句优化的示例分析
    这篇文章主要介绍MySQL中SQL语句优化的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!sql如下:sql强制用了into_time索引# Time: 2017-02-14...
    99+
    2024-04-02
  • MySQL中SQL优化建议的示例分析
    这期内容当中小编将会给大家带来有关MySQL中SQL优化建议的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。今天早上看到同事的一个优化需求,优化的时间其实不多,但...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作