Ich habe eine Abfrage in SQLite die 27s braucht.
Nun wollte ich diese Abfrage in Firebird ausführen und habe nach 45min. den FB-Server abgeschossen (mit dem Taskmanager)!
Vorab mal eine kurze Info.
Die Abfrage ergibt in SQLite...
376053 Zeilen abgeholt (6,77 sec)
In SQLite sieht die Abfrage wie folgt aus...
In Firebird musste ich diese etwas abändern und sieht so aus...
Die Abfrage in FB funktioniert, da ich mal die Ergebnismenge in der Subquery auf 10 begrenzt habe und es dafür das richtige Ergebnis zurück geliefert wurde.
Ich brauche eine Idee, was ich da noch machen kann, außer auf Firebird zu verzichten.
Nun wollte ich diese Abfrage in Firebird ausführen und habe nach 45min. den FB-Server abgeschossen (mit dem Taskmanager)!
Vorab mal eine kurze Info.
- Tabelle way_nodes besitzt 745815 Datensätze (Zeilen)
- Tabelle tv_highway besitzt 46416 DS
- Tabelle node besitzt 652866 DS
- entsprechende Index / Indizes wurden gesetzt
- DB für SQLite und Firebird sind vom Inhalt her identisch
Die Abfrage ergibt in SQLite...
376053 Zeilen abgeholt (6,77 sec)
In SQLite sieht die Abfrage wie folgt aus...
Code:
SELECT * FROM node WHERE nodeID IN ( SELECT nodeID FROM way_nodes INNER JOIN tv_highway WHERE way_nodes.wayID = tv_highway.wayID )
Code:
SELECT * FROM node WHERE nodeID IN ( SELECT WAY_NODES.NODEID FROM WAY_NODES INNER JOIN TV_HIGHWAY ON (WAY_NODES.WAYID=TV_HIGHWAY.WAYID) )
Ich brauche eine Idee, was ich da noch machen kann, außer auf Firebird zu verzichten.
Comment