>  기사  >  데이터 베이스  >  MySQL5.7에서 모든 사용을 통합하는 블랙 기술에 대한 그래픽 및 텍스트 코드 소개

MySQL5.7에서 모든 사용을 통합하는 블랙 기술에 대한 그래픽 및 텍스트 코드 소개

黄舟
黄舟원래의
2017-04-15 09:31:461651검색

이 글은 MySQL5.7의 union 모든 사용법을 5분 동안 안내합니다. 도움이 필요한 친구들은

를 참고하세요. >

MySQL5.6에서 모두 Union의 성능

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 버전에서는 실행 결과는 아래 그림과 같습니다.

MySQL5.7에서 모든 사용을 통합하는 블랙 기술에 대한 그래픽 및 텍스트 코드 소개

실행 계획에서 쿼리 결과는 helei 테이블과 t 테이블의 쿼리 결과는 임시 테이블로 병합된 후 클라이언트로 출력됩니다.

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)

MySQL5.7 버전에서는 아래와 같이 실행 결과가 나오는 것을 확인할 수 있다.

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)

MariaDB10.1에서 실행 결과는 아래와 같은 것을 확인할 수 있다.

MySQL5.7에서 모든 사용을 통합하는 블랙 기술에 대한 그래픽 및 텍스트 코드 소개

실행 결과로 볼 때, MySQL 5.7이나 MariaDB 10.1에서는 임시 테이블이 생성되지 않았습니다. 순서대로 helei 테이블의 쿼리 결과가 먼저 클라이언트에 출력된 후 t 테이블의 쿼리 결과가 출력됩니다. 클라이언트에게.

이 글의 최적화는 Union All에만 적용되며 가장 바깥쪽 레이어의 Union 및 Order By 사용에는 유효하지 않습니다. 아래 그림과 같이:

MySQL5.7에서 모든 사용을 통합하는 블랙 기술에 대한 그래픽 및 텍스트 코드 소개

- 요약 -

in MySQL5.7/MariaDB10.1 , 공용체 모두 더 이상 임시 테이블을 생성하지 않으므로 공동 쿼리 중 I/O 오버헤드가 줄어듭니다. 이 기능은 MySQL5.5/5.6에서 사용할 수 없습니다.

위 내용은 MySQL5.7에서 모든 사용을 통합하는 블랙 기술에 대한 그래픽 및 텍스트 코드 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.