婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 5分鐘了解MySQL5.7中union all用法的黑科技

5分鐘了解MySQL5.7中union all用法的黑科技

熱門標簽:電銷機器人說明書 安國在哪里辦理400電話 昆明智能外呼系統中心 智能電銷機器人靠譜么 地圖標注培訓 長安區違法建房地圖標注 手機用地圖標注工具 南宋地圖標注黃河華山 電銷機器人公眾號推送

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版本中,執行結果如下圖所示:

從執行計劃來看,是把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版本中,執行結果如下圖所示:

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中,執行結果如下圖所示:

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

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


——總結——

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

以上所述是小編給大家介紹的5分鐘了解MySQL5.7中union all用法的黑科技,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • MySQL如何使用union all獲得并集排序
  • MySQL中UNION與UNION ALL的基本使用方法
  • 淺析mysql union和union all
  • MySQL中使用or、in與union all在查詢命令下的效率對比
  • Mysql聯合查詢UNION和UNION ALL的使用介紹
  • 簡單了解MySQL union all與union的區別

標簽:潛江 東莞 江門 長沙 合肥 吉安 南昌 武漢

巨人網絡通訊聲明:本文標題《5分鐘了解MySQL5.7中union all用法的黑科技》,本文關鍵詞  5分鐘,了解,MySQL5.7,中,union,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《5分鐘了解MySQL5.7中union all用法的黑科技》相關的同類信息!
  • 本頁收集關于5分鐘了解MySQL5.7中union all用法的黑科技的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 云龙县| 筠连县| 金乡县| 本溪| 富阳市| 贵州省| 镇雄县| 新闻| 南宫市| 正定县| 同仁县| 永寿县| 莱阳市| 宁化县| 城固县| 福建省| 朔州市| 阜南县| 贡觉县| 灵山县| 科技| 丰宁| 龙游县| 馆陶县| 林甸县| 临西县| 松溪县| 长岭县| 苏尼特左旗| 西乡县| 奉新县| 彩票| 大城县| 鄄城县| 庆阳市| 河西区| 厦门市| 封丘县| 濮阳县| 临湘市| 阳江市|