Entwickler-Ecke
Datenbanken - view abfrage dauert viel zu lange
Matthias-K - Sa 28.01.06 18:17
Titel: view abfrage dauert viel zu lange
moin leutz,
ich habe folgendes prob:
ich habe mir einen view gebaut, aus 3 tabellen, jeweils über ein id feld verknüpft!
unter acces, wo die db vorher war, läuft dieser view einwandfrei.
is ja auch nur eine simple abfrage!
SQL-Anweisung
1: 2: 3:
| select * from tabelle1,tabelle2,tabelle3 where tab2_id = tab1_id and tab3_id = tab2_id |
nur dieser view braucht ein paar minuten, bis er aufgerufen ist! nur versteh ich das nicht!
es handelt sich um einen firebird 1.5 embeddet!
habs mit ibo versucht, ob es an meinem programm liegt, aber dort is es genauso!
kennt einer von euch das prob und weis abhilfe???
mfg matthias
MSCH - Sa 28.01.06 19:05
versuchs mal mit JOins;
SELECT Tabelle1.*,Tabelle2.*,Tabelle3.*
FROM (Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.ID) INNER JOIN Tabelle3 ON Tabelle2.id = Tabelle3.ID)
(oder so ähnlich :-)
Wichtig: Indexe, ohne diese dauern Abfragen immer länger
grez
msch
mkinzler - Sa 28.01.06 19:22
Theoretisch dürfte es keinen Unterschied machen ob du Joins in SQL92 oser SQL99-Notation abfragst.
Wie sieht die Struktur der Tabllen aus? Constraints? Indices? Anzahl der Felder/Datensätze? Wie sieht der Plan aus?
Matthias-K - Sa 28.01.06 23:59
also, ich habe es nochmal getestet!
in allen tabellen sind es jeweils 6000 ds!
es sind keine indexe, keine constraints usw darauf vorhanden! die db is z.zt. ca 90 mb groß! is also noch relativ klein!
also ich bin ratlos!
auch der zugriff ohne view auf die tabellen mit dieser verknüpfung untereinander ist viel zu langsam!
matthias
mkinzler - So 29.01.06 10:27
Wenn die Tabellen keine Indizes haben und auch keine Schlüssel definiert sind, könnte das schon der Grund für den langsamen Query sein. Definiere mal die PK und FK-Constraints für die Schlüsselfelder tabx_id der 3 Tabellen.
Wievile Detaildatensätze kommen durchschnittlich auf einen Masterdatensatz? Du mußt bedenken das dein Join über 3 Tabellen eine weit größere Ergebnismenge liefern kann.
Wieviel Felder haben die 3 Tabellen? Versuche Mal die * mit der nur wirklich benötigten Feldliste zu ersetzen.
MSCH - So 29.01.06 12:53
tse tse,
KEINE Indexe.
Kein Wunder, deine Datenbank rödelt sich tot.
das sind grob 6000*6000*6000= 216000000000 suchoptionen.
da brauchst du ne menge Speicher (für den Cache) und schätzungsweise 4 CPUs :-)
grez
msch
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!