2

このようなクエリがあるとします

SELECT DISTINCT customer_name 
FROM borrower 
WHERE customer_name in (SELECT customer_name FROM depositor)

上記を 2 つのクエリと見なすことができます

SELECT DISTINCT customer_name 
FROM borrower 
WHERE customer_name

B

SELECT customer_name 
FROM depositor

どちらが最初に実行されますか? このルールはすべてのサブクエリで同じですか?

どのようなタイプのサブクエリを書くことができますか? チュートリアル リンクを開始するためのヒントを教えてください。

4

1 に答える 1

0

最初の答えが間違っていたので編集してください。しかし、説明は正しかった:|

Aが最初に実行されます。サブクエリが相関しているため、上記の「すべて」のサブクエリを適用します。

+----+--------------------+-----------+----------------+---------------+---------------+---------+------+------+----------+--------------------------+
| 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を参照してください

于 2012-09-22T11:23:48.207 に答える