Home Database Mysql Tutorial Graphic and text code introduction to the black technology of union all usage in MySQL5.7

Graphic and text code introduction to the black technology of union all usage in MySQL5.7

Apr 15, 2017 am 09:31 AM

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)
Copy after login

It can be seen that under MySQL5.6 In this version, the execution results are as shown in the figure below:

Graphic and text code introduction to the black technology of union all usage in MySQL5.7

From the execution plan, the

query results of the helei table and the query results of the t table are Merged in a temporary table, and then output to the client.

Performance of union all under 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 &#39;help;&#39; or &#39;\h&#39; for help. Type &#39;\c&#39; 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)
Copy after login

It can be seen that in the MySQL5.7 version, the execution result is as shown below:


Graphic and text code introduction to the black technology of union all usage in 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 &#39;help;&#39; or &#39;\h&#39; for help. Type &#39;\c&#39; 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)
Copy after login

It can be seen that in MariaDB10.1, the execution result is as shown below:

Graphic and text code introduction to the black technology of union all usage in MySQL5.7

From The execution results show that no temporary table is created in either MySQL 5.7 or MariaDB 10.1. In order, the query results of the helei table are first output to the client, and then the query results of the t table are output to the client.


The optimization in this article is only for union all, and is invalid for union and the use of order by in the outermost layer. As shown in the figure below:

Graphic and text code introduction to the black technology of union all usage in MySQL5.7

——Summary——

in MySQL5.7/MariaDB10.1 , union all no longer creates temporary tables, which will reduce I/O overhead during

joint 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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to use union in c language How to use union in c language Sep 27, 2023 am 11:00 AM

The use of union in C language is a special data type that allows different data types to be stored in the same memory location. The use of union can help us save memory space and facilitate conversion between different data types. When using union, you need to note that the corresponding member is valid and only one member can be accessed at the same time.

How to use the FULL OUTER JOIN function in MySQL to obtain the union of two tables How to use the FULL OUTER JOIN function in MySQL to obtain the union of two tables Jul 26, 2023 pm 05:45 PM

How to use the FULLOUTERJOIN function in MySQL to obtain the union of two tables. In MySQL, the FULLOUTERJOIN function is a powerful join operation that combines inner joins and outer joins. It can be used to get the union of two tables, that is, combine all the data in the two tables into a single result set. This article will introduce the usage of the FULLOUTERJOIN function and provide some sample code to help readers better understand. FULLOUTERJOIN function

How does java define the Union class to realize the coexistence of data bodies? How does java define the Union class to realize the coexistence of data bodies? May 14, 2023 pm 03:34 PM

Define the Union class to implement the coexistence of data bodies. In the C/C++ language, a union, also known as a union, is a data structure similar to a struct. A union, like a struct, can contain many data types and variables. The difference between the two is as follows: all variables in a struct "coexist", and all variables are effective at the same time. Each variable occupies Different memory spaces; in a union, each variable is "mutually exclusive", only one variable is effective at the same time, and all variables occupy the same memory space. When multiple data need to share memory or only one of multiple data needs to be taken at a time, a union can be used. in Java

How to use mysql union to implement full outer join query How to use mysql union to implement full outer join query May 30, 2023 pm 06:49 PM

1. Union is not a method of multi-table connection query. It combines the query results of multiple query sentences into one result and removes duplicate data. 2. Full outer join queries the data of the left table and the right table, and then connects according to the connection conditions. Example #Use the left outer Aunion and the right outer BSELECT*FROMt_categorycLEFTOUTERJOINt_productpONc.cid=p.cnounionSELECT*FROMt_categorycRIGHTOUTERJOINt_productpONc.cid=p.cno

How to optimize UNION through MySQL to improve performance How to optimize UNION through MySQL to improve performance May 11, 2023 pm 05:40 PM

In many database applications, we are faced with situations where we need to integrate data from multiple data sources. MySQL's UNION statement is a way to solve this situation, which allows us to merge the result sets of two or more SELECT statements into one. While this is a very convenient feature, UNION statements can also cause performance issues on your system if not optimized. This article will explore how to optimize UNION to improve performance through MySQL. Use UNIONALL while using U

How to use Union to optimize Like statement in MySQL How to use Union to optimize Like statement in MySQL May 31, 2023 pm 03:55 PM

Optimize the Like statement with Union 1) Sometimes, you may need to use the or operator for comparison in the query. When the or keyword is used too frequently in the where clause, it may cause the MySQL optimizer to mistakenly choose a full table scan to retrieve records. The union clause can make queries execute faster, especially when one of the queries has an optimized index and the other query also has an optimized index. For example, when there are indexes on first_name and last_name respectively, execute the following query statement: mysql>select*fromstudentswherefirst_namelike'A

What are the points to note when using union in mysql? What are the points to note when using union in mysql? Jun 03, 2023 pm 08:04 PM

1. The union operator is used to combine the results of two or more select statements into a result set. Multiple select statements will delete duplicate data. 2. When using union to merge result sets, the number of columns in the two result sets is required to be the same. Exampleselectplayerno,townfromPLAYERSwheretown='Inglewood' unionselectplayerno,townfromPLAYERSwheretown='Plymouth';

What is the difference between union and unionall in MySQL What is the difference between union and unionall in MySQL May 30, 2023 am 08:04 AM

union: Perform a union operation on multiple result sets, excluding duplicate rows, and sort them at the same time. unionall: Performs a union operation on multiple result sets, including duplicate rows, without sorting. Query the information of employees whose department is less than 30, and the information of employees whose department is greater than 20 and less than 40. ①. First query the information of employees whose department number is less than 30. SELECTemployees_id,last_name,salary,department_idFROMemployeesWHEREdepartment_id

See all articles