cari
Rumahpangkalan datatutorial mysqlMySQL不支持子查询优化一例

MySQL不支持子查询优化一例

Jun 07, 2016 pm 04:43 PM
pengoptimuman pertanyaan mysqlpangkalan data

一创建表 create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);insert into tt1 value

一创建表

create table tt1(id int primary key, c1 INT);
create table tt2(id int primary key, c2 INT);
insert into tt1 values(1,1),(2,2),(3,3),(4,4);
insert into tt2 values(1,2),(2,2);

二 执行计划与问题

mysql> explain EXTENDED SELECT tt1.c1, (SELECT tt2.c2 FROM tt2 WHERE c2=10) FROM tt1, tt2;
+----+-------------+-------+-------+---------------+---------+---------+------+------+----------+---------------------------------------+
| id | select_type | table | type  | possible_keys | key    | key_len | ref  | rows | filtered | Extra                                |
+----+-------------+-------+-------+---------------+---------+---------+------+------+----------+---------------------------------------+
|  1 | PRIMARY    | tt2  | index | NULL          | PRIMARY | 4      | NULL |    2 |  100.00 | Using index                          |
|  1 | PRIMARY    | tt1  | ALL  | NULL          | NULL    | NULL    | NULL |    4 |  100.00 | Using join buffer (Block Nested Loop) |
|  2 | SUBQUERY    | tt2  | ALL  | NULL          | NULL    | NULL    | NULL |    2 |  100.00 | Using where                          |
+----+-------------+-------+-------+---------------+---------+---------+------+------+----------+---------------------------------------+
3 rows in set, 1 warning (0.00 sec)
这个语句的执行顺序是怎么执行的,就是按照执行计划这样从上到下执行吗?

三 分析

---id值为1的两个,,是From子句中的tt1和tt2,用块嵌套循环连接算法做内连接,tt2是外表,所以先启动的是tt2;后启动的是tt1。
---id值为2的是目标列中的子查询,后于FROM子句中的表执行。发生在连接后要求目标列的值发给客户端阶段。
---理论上是可以优化的,方法为:目标列只有一列和WHERE条件相同,所以,可以推知此子查询的结果是2。
---但是,MySQL没有优化这样的子查询。
---另外,对于这里的子查询,如果其结果返回多行,则MySQL会报告错误:ERROR 1242 (21000): Subquery returns more than 1 row。

--------------------------------------分割线 --------------------------------------

Ubuntu 14.04下安装MySQL

《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

Ubuntu 14.04下搭建MySQL主从服务器

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb

MySQL-5.5.38通用二进制安装

--------------------------------------分割线 --------------------------------------

本文永久更新链接地址:

linux

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimana saya menggugurkan atau mengubahsuai pandangan yang ada di mysql?Bagaimana saya menggugurkan atau mengubahsuai pandangan yang ada di mysql?May 16, 2025 am 12:11 AM

TODROPAVIEWInMYSQL, gunakan "dropviewififeXistsview_name;" andTomodifyAview, gunakan "createorreplaceviewview_nameasSelect ..."

Pandangan MySQL: Corak reka bentuk mana yang boleh saya gunakan dengannya?Pandangan MySQL: Corak reka bentuk mana yang boleh saya gunakan dengannya?May 16, 2025 am 12:10 AM

Mysqlviewscaneffectivetyutilizedesignpatternslikeadapter, penghias, kilang, andobserver.1) adapterpaternaptsdatafromdifferenttablesintoaunifiedview.2)

Apakah kelebihan menggunakan pandangan di MySQL?Apakah kelebihan menggunakan pandangan di MySQL?May 16, 2025 am 12:09 AM

ViewsinmysqlarebeneficialforsImplifingceMlexqueries, Enhancingsecurity, MemastikanDataconsistency, andoptimizingperformance

Bagaimana saya boleh membuat pandangan mudah di mysql?Bagaimana saya boleh membuat pandangan mudah di mysql?May 16, 2025 am 12:08 AM

TOCREATEASIMPLEVIEWInMYSQL, USETHECreatEviewStatement.1) definetheViewWithCreateViewView_nameas.2)

MySQL Buat Penyataan Pengguna: Contoh dan Kesalahan BiasaMySQL Buat Penyataan Pengguna: Contoh dan Kesalahan BiasaMay 16, 2025 am 12:04 AM

TOCReateUsersinMysql, UsethecreateUserStatement.1) Foralocaluser: createuser'localuser '@' localhost'identifiedby'SecureShword '; 2) foraremoteuser: createuser'remoteuser'@'%'

Apakah batasan menggunakan pandangan di MySQL?Apakah batasan menggunakan pandangan di MySQL?May 14, 2025 am 12:10 AM

Mysqlviewshavelimitations: 1) theDon'tsupportallsqloperations, bintikDatamanipulationThroughviewswithjoinsorsubqueries.2) merekacanimpactperformance, terutamanya dengan komplekssum

Faktor apa yang mempengaruhi bilangan pencetus yang boleh saya gunakan di MySQL?Faktor apa yang mempengaruhi bilangan pencetus yang boleh saya gunakan di MySQL?May 14, 2025 am 12:08 AM

Mysqldoes'timposeahardlimitontriggers, butpracticalfactorsDeterminetheirefectiveus

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
<🎜> obscur: Ekspedisi 33 - Cara mendapatkan pemangkin Chroma yang sempurna
2 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.