2

MySQlを使用して、「モジュール」テーブルのカテゴリIDに基づいて1つのテーブルから名前をカテゴリ化します。

以下のSQLは自分のニーズに合わせて正常に機能していますが、これが考慮されているかどうかを知りたいJOINですか?

JOIN?を呼び出さないので

SELECT  `mo_category_fk` ,  `mo_name_vc` ,  `mc_name_vc`
FROM x_modcats mc, x_modules m
WHERE mc.mc_id_pk = m.mo_category_fk
AND m.mo_folder_vc =  :module
4

2 に答える 2

3

はい - MySQL では、暗黙的結合と明示的結合の実行計画は同じです。これは で確認できますEXPLAIN。しかし、ここに別のスレッドからのサンプルがあります:

mysql> explain select * from table1 a inner join table2 b on a.pid = b.pid;
+----+-------------+-------+------+---------------+------+---------+--------------+------+-------+
| id | select_type | table | type | possible_keys | key  | key_len | ref          | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+--------------+------+-------+
|  1 | SIMPLE      | b     | ALL  | PRIMARY       | NULL | NULL    | NULL         |  986 |       |
|  1 | SIMPLE      | a     | ref  | pid           | pid  | 4       | schema.b.pid |   70 |       |
+----+-------------+-------+------+---------------+------+---------+--------------+------+-------+
2 rows in set (0.02 sec)

mysql> explain select * from table1 a, table2 b where a.pid = b.pid;
+----+-------------+-------+------+---------------+------+---------+--------------+------+-------+
| id | select_type | table | type | possible_keys | key  | key_len | ref          | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+--------------+------+-------+
|  1 | SIMPLE      | b     | ALL  | PRIMARY       | NULL | NULL    | NULL         |  986 |       |
|  1 | SIMPLE      | a     | ref  | pid           | pid  | 4       | schema.b.pid |   70 |       |
+----+-------------+-------+------+---------------+------+---------+--------------+------+-------+
2 rows in set (0.00 sec)
于 2013-03-17T01:09:00.927 に答える
2

はい、あなたは参加しています。ドキュメントによると、キーワード ..,の代わりに使用できますが、非常に役立つ句は使用できません。ただし、句内のテーブルを接続する条件があります。私の意見では、節の一部としてそれを行う方が理にかなっています。JOINONWHEREFROM

SELECT mo_category_fk, mo_name_vc, mc_name_vc
FROM x_modcats mc 
JOIN x_modules m ON (mc.mc_id_pk = m.mo_category_fk)
WHERE m.mo_folder_vc = :module
于 2013-03-17T01:08:54.117 に答える