Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Abfragezeit unverhältnismäßig groß beim anfügen einer neuen Tabelle

Mitglied: starter

starter (Level 1) - Jetzt verbinden

08.02.2008, aktualisiert 09.02.2008, 5920 Aufrufe, 9 Kommentare

Hallo, ich nochmal,

hab ein kleines Verständnisproblem in Access....

Also habe eine Abfrage mit Verknüpfungen zu mehreren Tabellen. Diese Abfrage dauert ca. 4 sek. Füge ich eine weitere relativ große Tabelle an, von der ich nur eine Spalte benötige, dauert die Abfrage 5 Stunden.

Kleines Beispiel:

Tabelle A mit ca 10000 Sätzen
Tabelle B mit ca 5000 Sätzen
Tabelle C mit ca 20000 Sätzen

Bisherige Abfrage:
Finde in Tabelle A die Sätze die in einem Zeitraum zwischen gestern und heute liegen. --> Bleiben ca. 30 Sätze übrig ...... und füge aus Tabelle B das Feld xy zu. .... soweit so gut (Abfrage ca. 4 sek.)

Neue Abfrage:
gleich wie Bisherige Abfrage, aber nun füge aus Tabelle C noch das Feld zz dazu. --> Abfragezeit auf einmal ca. 5 Stunden



Ich glaube dass Access dann hin geht und nicht das Ergebnis aus der bisherigen Abfrage nimmt und sich die Felder in Tabelle C sucht, also mit den gefundenen 30 Sätzen, sondern jeden einzelnen Satz aus Tabelle A (also die 10000) nimmt und die 20000 Sätze aus Tabelle C durch geht.


Nun meine Frage: Wie schaffe ich es, dass Access dann nur die 30 Sätze nimmt um die Tabelle C zu durchsuchen. Gibt es da einen Trick bezüglich der reihenfolge der Verknüpfungen?

Danke schon mal
Mitglied: AndreasHoster
08.02.2008 um 12:12 Uhr
Der SQL Code der Abfrage und die Angabe der Tabellendefinitionen, insbesondere Primarschlüssel und Indexfelder würden bei der Analyse helfen.

Ansonsten zur direkten Beantwortung Deiner Frage:
Einfache und übersichtlichere Variante:
Die jetzige Abfrage stehen lassen und auf diese aufbauend eine weitere Abfrage die die Tabelle 3 hinzufügt. Damit gibt die erste Abfrage erstmal 30 Datensätze zurück und dann kommt erst Tabelle 3.
Kompliziertere Variante:
SQL erlaubt die Definition von Select Statements als virtuelle Tabellen.
ALso sowas:
Select T1.a, VirtuelleTabelle1.b ... from (select ... from T2, T3) as VirtuelleTabelle1, T1

Ich denke aber nicht, daß das Dein Problem ist, sondern das die Verknüpfung zu Tabelle C auf ein nicht indiziertes Feld geht und daher Full Table Scans nötig sind, um die entsprechenden Zeilen zu finden.
Bitte warten ..
Mitglied: starter
08.02.2008 um 14:45 Uhr
super, vielen Dank für die schnelle Antwort.
Ich habe soeben Variante 1 Probiert und quasi die erste Abfrage als solches in die zweite integriert. Durch die erste Abfrage erhalte ich ja meine 30 Sätze (=4 sek). Verknüpft mit der zweiten Abfrage rödelt er wieder eine ewigkeit herrum. Ich habe nun nach einer Stunde abgebrochen.

Zu den Randinformationen:
1. ODBC auf 5 Tabellen mit Access 2000
2. Jede Tabelle hat zwischen 26.000 und 250.000 zeilen und zwischen 10 und 40 Spalten

Hier mal die SQL Anweisung. Für die erste Abfrage (4sek):

SELECT [Artikelnr zu Objekey].KD_VORGANGS_NR, [Artikelnr zu Objekey].POSITIONS_NR, [Artikelnr zu Objekey].ARTIKEL_NR, [Artikelnr zu Objekey].AUFTRAGSMENGE, PROD6_PFGJ.RM_GUT_MENGE, PROD6_PFGJ.BELEGUNGSEINHEIT_NR, PROD6_PFGJ.LETZTE_RUECKMELDUNG, [AC Modul].SACHMWERT, [AF Gangzahl].SACHMWERT, [AH Qualität].SACHMWERT, [BB Außendurchmesser].SACHMWERT, [BD Nutzlänge].SACHMWERT, [BC Gesamtlänge].SACHMWERT, [BE Bohrungsdurchmesser].SACHMWERT, [BG Anzahl Spannuten].SACHMWERT, [BH Spanwinkel].SACHMWERT, [BL Werkstoff].SACHMWERT
FROM [BL Werkstoff] INNER JOIN ([BH Spanwinkel] INNER JOIN ([BG Anzahl Spannuten] INNER JOIN ([BE Bohrungsdurchmesser] INNER JOIN ([BD Nutzlänge] INNER JOIN ([BC Gesamtlänge] INNER JOIN ([AC Modul] INNER JOIN ([AF Gangzahl] INNER JOIN ([AH Qualität] INNER JOIN ([BB Außendurchmesser] INNER JOIN (PROD6_PFGJ INNER JOIN [Artikelnr zu Objekey] ON PROD6_PFGJ.RUECKMELDE_NR = [Artikelnr zu Objekey].RUECKMELDE_NR) ON [BB Außendurchmesser].OBJKEY = [Artikelnr zu Objekey].Ausdr1) ON [AH Qualität].OBJKEY = [BB Außendurchmesser].OBJKEY) ON [AF Gangzahl].OBJKEY = [AH Qualität].OBJKEY) ON [AC Modul].OBJKEY = [AF Gangzahl].OBJKEY) ON [BC Gesamtlänge].OBJKEY = [AC Modul].OBJKEY) ON [BD Nutzlänge].OBJKEY = [BC Gesamtlänge].OBJKEY) ON [BE Bohrungsdurchmesser].OBJKEY = [BD Nutzlänge].OBJKEY) ON [BG Anzahl Spannuten].OBJKEY = [BE Bohrungsdurchmesser].OBJKEY) ON [BH Spanwinkel].OBJKEY = [BC Gesamtlänge].OBJKEY) ON [BL Werkstoff].OBJKEY = [BH Spanwinkel].OBJKEY
WHERE (((PROD6_PFGJ.BELEGUNGSEINHEIT_NR)=150002 Or (PROD6_PFGJ.BELEGUNGSEINHEIT_NR)=160002 Or (PROD6_PFGJ.BELEGUNGSEINHEIT_NR)=170002) AND ((PROD6_PFGJ.LETZTE_RUECKMELDUNG) Between "20080107" And "20080111"));



Ergeben also meine 30 Sätze.


und nun soll einfach nur noch der WERKSTOFF hinzu der in der Tabelle PART zu finden ist. Der Schlüssel ist die hier die Artikel_NR



OK ich gebe zu die erste Abfrage habe ich hier sark zusammengefasst beschrieben. Aber immerhin nur 4 Sek.

Grüße
Bitte warten ..
Mitglied: AndreasHoster
08.02.2008 um 15:06 Uhr
Das bedeutet, daß er zum Raussuchen der passenden Zeilen aus Tabelle Part so lange braucht.

Ist das Feld der Tabelle Part, welches für den Join verwendet wird, alleiniger Primärschlüssel, bzw. liegt ein alleiniger Index auf dem Feld?
Bitte warten ..
Mitglied: starter
08.02.2008 um 15:12 Uhr
Die Tabelle part ist der Artikelstamm und der Primärschlüsse ist die Artikel_Nr. Ich würde behaupten dass im ganzen System sich keine Tabelle besser für diesen Primärschlüssel eignen würde.

Ich habe das Gefühl, dass Access mit der Datenmenge schlicht und einfach überforder ist. Ich habe versucht die SQL Anweisung in Toad einzufügen. Aber meine Oracle-Datenbank kennt wohl kein INNER JOIN... Aber wie macht das dann Access??
Bitte warten ..
Mitglied: AndreasHoster
08.02.2008 um 16:03 Uhr
Möglich, wie groß ist die MDB denn insgesamt?
Wir haben hier 500 MB MDBs, die gehen gerade noch so.

Aber das Raussuchen von Zeilen per Primärschlüssel sollte deutlich schneller gehen.
Wie schnell geht den eine Abfrage vom Typ:
Select * from part where Artikel_NR='xxxxx' or Artikel_NR='yyyyy'

Zum Inner Join:
Select T1.a, T2.b from T1, T2 where T1.ID=T2.ID
wäre ein Inner Join ohne das Schlüsselwort Inner Join. Das sollte auch Oracle hinkriegen.
Bitte warten ..
Mitglied: starter
08.02.2008 um 16:14 Uhr
Hmm das sind ja nur ein paar Tabellen von der DB... aber was heißt eigentlich MDB? ?=Microsoft-DB?? Wir haben doch eine Oracle DB... und die ist so ca 6 GB groß...

Das Raussuchen via Access und ODBC in part ist in sekunden schnelle passiert ...

Wenn das Inner Join sonst nichts anderes macht bin ich beruhigt...

Wie schon geschrieben denke ich, dass da Access an die grenzen kommt, obwohl ich mir das nicht so richtig vorstellen kann .... (von übrgigebliebenen 30 Dateien aus einer anderern Tabelle einen Wert raussuchen) Villeicht liegt es doch an mir.....

Vielen Dank schon mal für die HIlfe
Bitte warten ..
Mitglied: AndreasHoster
08.02.2008 um 16:33 Uhr
Äh, sorry, das ist bei mir nicht angekommen daß Access nur als Frontend verwendet wird.

Und Ok, da gibts ein Problem, Abfragen in Access werden von Access berechnet, damit muß Access erstmal alle Tabellen laden und die Indizes der Oracle DB werden nicht benutzt.

Besser ist es, dies als View auf der Oracle anzulegen. Dann berechnet das die Oracle DB und nicht Access. Spart auch Bandbreite im Netzwerk.
Bitte warten ..
Mitglied: starter
09.02.2008 um 22:10 Uhr
Ah ok, und wie kann ich auf die Oracle-DB ein view ausführen? Kann ich das mit Access? Ich dachte dadurch dass ich die Tabellen per ODBC verknüpft habe lade ich so gut wie nichts rüber!? Sorry für die Frage aber ich kenne mich noch nicht so gut mit Access und DB's aus.
Bitte warten ..
Mitglied: AndreasHoster
09.02.2008 um 22:47 Uhr
Die Tabellen per ODBC verknüpfen bedeutet nur, daß die Daten der Tabellen nicht in der Access MDB Datei liegen, aber bei Abfragen, Suchen, Sortieren macht Access alles selber und muß dazu die ganzen Daten Lesen.

Die View/Sicht musst Du erst auf der Oracle DB anlegen. geht mit jedem Tool das SQL Befehle an die Oracle schicken kann, ich glaube das von Oracle heißt SQL PLUS. Toad sollte auch gehen. Oracle ist halt nicht meine DB.
View anlegen geht mit create view as Select ... und hier das passende Select-Statement.

Danach kannst Du die View wie eine Tabelle per ODBC verbinden. In Access wird das auch als Tabelle dargestellt. Und wenn Du dann Daten aus dieser Tabelle liest, wird auf der Oracle DB die View ausgeführt.
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Seitenumbruch in Excel soll neue Tabelle sein

gelöst Frage von killtecMicrosoft Office10 Kommentare

Hallo zusammen, ein Kollege trat gerade an mich ran und hatte gefragt, ob es möglich ist, eine Exceltabelle die ...

Microsoft Office

Excel Tabelle gefiltert auf neues Tabellenblatt

gelöst Frage von Florian86Microsoft Office3 Kommentare

Hallo, ich habe folgendes Problem und zwar möchte ich eine Excel Tabelle mit folgenden Aufbau Datum Lfd. Nr. Menge ...

LAN, WAN, Wireless

Router in großem Netzwerk neu konfigurieren

Frage von stmarkLAN, WAN, Wireless12 Kommentare

Guten Abend allerseits! ich versuche mein Problem so kurz und präzise wie möglich zu erläutern: Ich wohne in einem ...

VB for Applications

Vbscript zum Anfügen von Text in scenery.cfg Datei

gelöst Frage von aletriVB for Applications27 Kommentare

Guten Tag an alle Der folgende Script fügt der Scenery.cfg Datei des Flugsimulators einen Szenerie Eintrag hinzu. Das hatte ...

Neue Wissensbeiträge
Humor (lol)
Meine Variante der DSGVO
Tipp von Henere vor 12 StundenHumor (lol)1 Kommentar

Datenschutzerklärung Jede gute Website braucht eine Datenschutzerklärung? Ok, dann machen Sie sich auf etwas gefasst. Präambel Artikel 12 der ...

Administrator.de Feedback

Entwicklertagebuch: Datenschutzerklärung nach DS-GVO

Information von admtech vor 19 StundenAdministrator.de Feedback

Hallo Administrator User, Wir respektieren eure Privatsphäre und möchten euch daher auf die Möglichkeiten für den Umgang mit euren ...

Voice over IP

Rufnummernblock aufbrechen nun möglich bei DTAG

Tipp von Datenreise vor 22 StundenVoice over IP

Bei der Telekom ist es seit einigen Tagen laut Aussage der Geschäftskunden-Hotline möglich, eine Rufnummernübernahme auch dann durchzuführen, wenn ...

Netzwerke
Riesiges Botnetz in Deutschland
Tipp von FFSephiroth vor 1 TagNetzwerke1 Kommentar

Überprüft mal eure Router und NAS

Heiß diskutierte Inhalte
HTML
Link nicht vollständig
Frage von jensgebkenHTML33 Kommentare

Hallo Gemeinschaft, ich erstelle mit Word einen Serienbrief, den ich per Mail versende. Nun mein Problem der Wordserienbrief holt ...

Voice over IP
VOIP: Lösungen für Notruf?
Frage von MimemmmVoice over IP26 Kommentare

Hey Welche Möglichkeiten hat man eigentlich noch bei VOIP um zuverlässige Notrufe zu ermöglichen? Ein aufgeladenes Handy habe ist ...

Server-Hardware
ILO4 auf HP DL20 Gen9 deaktivieren
Frage von it-fraggleServer-Hardware16 Kommentare

Hallo, es ist zum verrückt werden. Auf dem Server lässt sich iLO nicht abschalten. Das Problem hatte ich schon ...

Windows Server
Fragwürdige GPO Fehler im Syslog
gelöst Frage von Ex0r2k16Windows Server13 Kommentare

Hallo! Ich kriege bei manchen (oder sogar allen? -prüfe noch) Clients folgenden Fehler bei mehreren GPOs (aber nicht bei ...