このMySQLクエリが17k行のテーブルで永遠に(そして決して終了しない)かかるのはなぜですか?
SELECT * FROM files_folders WHERE file IN (SELECT file FROM files_folders WHERE folder = 123);
基本的に、ファイルは複数のフォルダー(物理ファイルとそのコピー)に入れることができます。フォルダ123にあるすべてのファイルを取得しようとしています。現在、私の例では、フォルダ123に2つのファイルがあります。ID#4222とID#7121。ただし、これら2つのファイルは、フォルダー123だけでなく他のフォルダーにもある可能性があります。
私はこれを間違った方法で行っていますか、それとも私が見逃しているものがありますか?
編集:これはテーブル構造の例です。
+--------------+
| file | folder|
+------+-------+
| 1 | 1 |
| 2 | 1 |
| 1 | 2 |
| 3 | 2 |
| 4 | 3 |
+------+-------+
したがって、フォルダ1にあるすべてのファイル(およびそのコピー)を選択すると、次のようになります。
+--------------+
| file | folder|
+------+-------+
| 1 | 1 |
| 2 | 1 |
| 1 | 2 |
+------+-------+
ファイル1はフォルダ1と2の両方にあるためです。
ありがとうございました。