为什么这个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