爲什麼這個MySQL查詢需要永久(並且永遠不會完成)在一個有17k行的表上?爲什麼這個簡單的查詢需要永久?
SELECT * FROM files_folders WHERE file IN (SELECT file FROM files_folders WHERE folder = 123);
基本上,一個文件可以在幾個文件夾(物理文件及其副本)中。我試圖獲取文件夾123中的所有文件。現在在我的示例中,文件夾123中有兩個文件。ID#4222 & ID#7121。但是,這兩個文件可能在其他文件夾以及文件夾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
謝謝。
你有'文件夾'的索引嗎? – 2012-04-03 19:40:32
我錯過了什麼嗎?爲什麼不只是:'SELECT * FROM files_folders WHERE Folder = 123;' – 2012-04-03 19:43:17
爲什麼不只是'SELECT * FROM files_folders WHERE Folder = 123'?目前你選擇'ID',其中'Folder = 123'然後選擇'ID',其中'ID = ID'。 – David 2012-04-03 19:43:39