Warum dauert diese MySQL-Abfrage für eine Tabelle mit 17.000 Zeilen ewig (und endet nie)?Warum dauert diese einfache Abfrage für immer?
SELECT * FROM files_folders WHERE file IN (SELECT file FROM files_folders WHERE folder = 123);
Grundsätzlich kann sich eine Datei in mehreren Ordnern befinden (eine physische Datei und ihre Kopien). Ich versuche, alle Dateien in Ordner 123 zu bekommen. In meinem Beispiel gibt es jetzt 2 Dateien in Ordner 123. ID # 4222 & ID # 7121. Aber diese 2 Dateien könnten auch in anderen Ordnern und im Ordner 123 sein.
Mache ich das falsch oder gibt es etwas, das mir fehlt?
Bearbeiten: Hier ist ein Beispiel für die Tabellenstruktur.
+--------------+
| file | folder|
+------+-------+
| 1 | 1 |
| 2 | 1 |
| 1 | 2 |
| 3 | 2 |
| 4 | 3 |
+------+-------+
Deshalb möchte ich alle Dateien auszuwählen (und die Kopien), die mit 1 in Ordnern sind, die zurückkommen würde:
+--------------+
| file | folder|
+------+-------+
| 1 | 1 |
| 2 | 1 |
| 1 | 2 |
+------+-------+
Da 1 Datei 1 sowohl in Ordnern und 2.
Vielen Dank.
Haben Sie einen Index für 'Folder'? –
Fehle ich etwas? Warum nicht einfach: 'SELECT * FROM files_folders WHERE Ordner = 123;' –
Warum nicht einfach 'SELECT * FROM files_folders WHERE Ordner = 123'? Momentan wählen Sie die 'ID' aus, wobei' Folder = 123' und dann im Wesentlichen '*' mit 'ID = ID' ausgewählt wird. – David