六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

MySQL5.7中union all用法的黑科技的圖文代碼說明

[摘要]本文帶領大家通過5分鐘了解MySQL5.7中union all用法的黑科技,需要的朋友可以參考下union all在MySQL5.6下的表現Part1:MySQL5.6.25[root@HE1 ~]# MySQL -uroot -pEnter password: Welcome to the My...
本文帶領大家通過5分鐘了解MySQL5.7中union all用法的黑科技,需要的朋友可以參考下

union all在MySQL5.6下的表現

Part1:MySQL5.6.25


[root@HE1 ~]# MySQL -uroot -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.25-log MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+------------+
  version()  
+------------+
  5.6.25-log  
+------------+
1 row in set (0.26 sec)
  
mysql> explain (select id from helei order by id) union all (select id from t where id=0 order by id);
+----+--------------+------------+-------+---------------+--------+---------+------+------+-----------------+
  id   select_type   table     type   possible_keys   key    key_len   ref   rows   Extra       
+----+--------------+------------+-------+---------------+--------+---------+------+------+-----------------+
  1   PRIMARY     helei     index   NULL       idx_c1   4      NULL   5219   Using index    
  2   UNION      t       ALL    NULL       NULL    NULL    NULL    1   Using where    
  NULL   UNION RESULT   <union1,2>   ALL    NULL       NULL    NULL    NULL   NULL   Using temporary  
+----+--------------+------------+-------+---------------+--------+---------+------+------+-----------------+
3 rows in set (0.00 sec)

可以看出,在MySQL5.6版本中,執行結果如下圖所示:

wKioL1f8bZvhzEMaAAFulp6pefo997.jpg

從執行計劃來看,是把helei表的查詢結果和t表的查詢結果合并在了一張臨時表里,然后輸出給客戶端。

union all在MySQL5.7/MariaDB10.1下的表現

Part1:MySQL5.7.15


[root@HE1 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.15-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+------------+
  version()  
+------------+
  5.7.15-log  
+------------+
1 row in set (0.00 sec)、
mysql> explain (select id from helei order by id) union all (select id from t where id=0 order by id);
+----+-------------+-------+------------+-------+---------------+--------+---------+------+------+----------+-------------+
  id   select_type   table   partitions   type   possible_keys   key    key_len   ref   rows   filtered   Extra     
+----+-------------+-------+------------+-------+---------------+--------+---------+------+------+----------+-------------+
  1   PRIMARY     helei   NULL      index   NULL       idx_c1   4      NULL   5212    100.00   Using index  
  2   UNION      t     NULL      ALL    NULL       NULL    NULL    NULL    1    100.00   Using where  
+----+-------------+-------+------------+-------+---------------+--------+---------+------+------+----------+-------------+
2 rows in set, 1 warning (0.00 sec)

可以看出,在MySQL5.7版本中,執行結果如下圖所示:

wKiom1f8bijj3fJiAAF48HG3WPQ918.jpg

Part2:MariaDB10.1.16


[root@HE3 ~]# /usr/local/mariadb/bin/mysql -uroot -S /tmp/mariadb.sock 
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 10.1.16-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [helei]> explain (select id from helei order by id) union all (select id from t where id=0 order by id);
+------+-------------+-------+-------+---------------+--------+---------+------+------+-------------+
  id    select_type   table   type   possible_keys   key    key_len   ref   rows   Extra     
+------+-------------+-------+-------+---------------+--------+---------+------+------+-------------+
   1   PRIMARY     helei   index   NULL       idx_c1   4      NULL   5198   Using index  
   2   UNION      t     ALL    NULL       NULL    NULL    NULL    1   Using where  
+------+-------------+-------+-------+---------------+--------+---------+------+------+-------------+
2 rows in set (0.00 sec)

可以看出在MariaDB10.1中,執行結果如下圖所示:

wKioL1f8bmmwi9GLAAFbMJCN0uU554.jpg

從執行結果看,無論是MySQL5.7還是MariaDB10.1,都沒有創建臨時表,按照順序,helei表的查詢結果首先輸出到客戶端,然后t表的查詢結果再輸出到客戶端。

本文中的優化只針對union all,對union和在最外層使用order by無效。如下圖是所示:

wKiom1f8boazPx35AAKnKQS1Ig4776.jpg

——總結——

在MySQL5.7/MariaDB10.1中,union all不再創建臨時表,這樣在聯合查詢時會減少I/O開銷,在MySQL5.5/5.6中則不具備這一特性。

以上就是MySQL5.7中union all用法的黑科技的圖文代碼介紹的詳細內容,更多請關注php中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。




主站蜘蛛池模板: 手机看片福利日韩欧美看片 | 日本高清视频在线观看 | 亚洲综合影视 | 色综合久久综合中文小说 | 青青草免费在线 | 天堂8中文在线bt | 亚洲伦理网站 | 香蕉漫画基地成人 | 一级a爰片久久毛片 | 四虎4hu永久免费国产精品 | 亚洲男人的天堂久久香蕉 | 欧美网站在线观看 | 天堂一区二区三区在线观看 | 青青国产在线播放 | 自偷自拍视频 | 日韩一区二区三区不卡 | 五月综合色啪 | 中国黄色毛片 大片 | 一二三四免费观看在线8 | 日韩精品一区二区三区免费观看 | 亚洲欧美久久精品 | 速度与激情9免费完整版高清 | 亚洲第一激情 | 香蕉视频在线免费播放 | 欧美在线网 | 色妇色综合久久夜夜 | 日本大片在线播放在线 | 日本精品视频在线 | 亚洲专区一| 午夜视频在线观看网站 | 天天做天天爱天天一爽一毛片 | 婷婷综合影院 | 亚洲自偷精品视频自拍 | 欧美怡红院视频一区二区三区 | 最近最新中文字幕免费的一页 | 中国美女牲交一级毛片 | 欧美无遮挡一区二区三区 | 自偷自拍亚洲综合精品 | 日韩国产综合 | 亚洲精品有码在线观看 | 亚洲最大的成人网 |