中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL5.7中select半連接優化的示例分析

發布時間:2021-11-01 14:32:49 來源:億速云 閱讀:240 作者:小新 欄目:MySQL數據庫

這篇文章主要為大家展示了“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半連接優化的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铁力市| 鸡东县| 鄢陵县| 北海市| 巴青县| 屯昌县| 叙永县| 虞城县| 旅游| 仁怀市| 中阳县| 疏附县| 商城县| 延边| 常宁市| 湟中县| 清丰县| 湖州市| 三河市| 凤阳县| 陆河县| 正定县| 施甸县| 鄂伦春自治旗| 酉阳| 迁安市| 灵宝市| 电白县| 昭通市| 饶河县| 西丰县| 翁牛特旗| 井冈山市| 罗甸县| 南部县| 灵山县| 崇州市| 忻城县| 武陟县| 缙云县| 报价|