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

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

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知識。




主站蜘蛛池模板: 色综合天天综合网站中国 | 日韩成人免费视频播放 | 午夜精品久视频在线观看 | 日日干夜夜操 | 青青草精品在线 | 色婷婷av777| 日本在线高清 | 婷婷网五月天天综合天天爱 | 欧美视频精品在线观看 | 四虎永久免费观看 | 日本视频免费播放 | 日韩欧美视频二区 | 日韩第一页在线 | 色网站综合 | 亚洲成a人片77788 | 欧美又大粗又爽又黄大片视频黑人 | 日本精高清区一 | 伊人久久大 | 亚洲色中色 | 亚洲国产第一页 | 日日干干夜夜 | 色综合久久88色综合天天 | 欧美一区二区三区精品影视 | 中文字幕亚洲一区 | 五月激情片 | 天天做天天爱天天爽综合区 | 亚洲人成在线播放网站 | 色www免费视频 | 色猫av| 日韩一级片免费观看 | 日韩欧美亚洲综合久久影院d3 | 日本特黄特色视频 | 欧美又硬又粗又长又大 | 日韩在线视频免费 | 欧日韩在线不卡视频 | 天天色天天干天天 | 星辰影院在线观看高清免费观看 | 日日噜噜夜夜狠狠视频欧美人 | 亚洲欧美日韩国产综合久 | 亚洲国产成a人v在线 | 色婷婷5月精品久久久久 |