![](/img/trans.png)
[英]Order of execution in MySQL query with multiple JOINS of subqueries
[英]Mysql Execution of subqueries
說我有這樣的查詢
SELECT DISTINCT customer_name
FROM borrower
WHERE customer_name in (SELECT customer_name FROM depositor)
我們可以將以上視為兩個查詢
一種
SELECT DISTINCT customer_name
FROM borrower
WHERE customer_name
乙
SELECT customer_name
FROM depositor
哪個先執行? 所有子查詢的規則都一樣嗎?
我們可以編寫哪些類型的子查詢? 給我一些指導,以開始使用教程鏈接。
編輯為第一個答案是錯誤的 。 但是解釋是正確的:|
首先執行。 當子查詢相關時,應用上面介紹的“所有”子查詢。
+----+--------------------+-----------+----------------+---------------+---------------+---------+------+------+----------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+--------------------+-----------+----------------+---------------+---------------+---------+------+------+----------+--------------------------+
| 1 | PRIMARY | borrower | index | NULL | customer_name | 52 | NULL | 6 | 100.00 | Using where; Using index |
| 2 | DEPENDENT SUBQUERY | depositor | index_subquery | customer_name | customer_name | 52 | func | 1 | 100.00 | Using index |
+----+--------------------+-----------+----------------+---------------+---------------+---------+------+------+----------+--------------------------+
順便說一句。 MySQL 6將解決此問題,並且兩個查詢的選擇類型都將變為PRIMARY
。 查看1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.