This article will guide you through 5 minutes to understand the black technology of union all in MySQL5.7. Friends who need it can refer to it
Union all performance under 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)
Performance of union all under MySQL5.7/MariaDB10.1
[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)
[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)
——Summary——
in MySQL5.7/MariaDB10.1 , union all no longer creates temporary tables, which will reduce I/O overhead duringjoint queries. This feature is not available in MySQL5.5/5.6.
The above is the detailed content of Graphic and text code introduction to the black technology of union all usage in MySQL5.7. For more information, please follow other related articles on the PHP Chinese website!