| Autor |
Beitrag |
Matthias-K
      
Beiträge: 271
Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
|
Verfasst: Sa 28.01.06 18:17
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
_________________ Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: 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
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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?
_________________ Markus Kinzler.
|
|
Matthias-K 
      
Beiträge: 271
Win95, Win98, Win2000, WinXP, Linux
D2, D4 Client/Server, D5 Enterprise, D6 Enterprise, D7 Enterprise, Delphi2005, C/C++ 3.0, C/C ++ 5.0, C/C++ 6.0
|
Verfasst: 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
_________________ Ein Spezialist ist ein Mensch, der immer mehr von immer weniger weis, bis er alles von nichts weis!
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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.
_________________ Markus Kinzler.
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: 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
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
|
|
|