![]() |
AW: Doppel-Select-Anweisung zu langsam
@Morphie
Nur so zum Spass, leg doch mal einen Index ArtikelBeleg an mit eben den beiden Spalten ArtikelNr, BelegNr (auch in der Reihenfolge wie in der Where Bedingung). Die Laufzeit und das Explain würden mich mal interessieren (von beiden). Ich vermute mal, dass MySQL jetzt schneller wird (weil es jetzt einen passenden Index zum Where gibt). Ob Maria da noch etwas zulegen kann ... |
AW: Doppel-Select-Anweisung zu langsam
Kein Vorteil...
Den Index habe ich so angelegt:
Code:
Der Plan sieht jetzt so aus:
ALTER TABLE `positionen` ADD INDEX `ArtikelBeleg` (`artikelnr`, `Belegnr`);
Code:
Er nimmt jetzt also den Index, aber irgendwie immer noch anders als bei MariaDB... Geschwindigkeitsvorteile gibt es auch keine
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE POSITIONEN ref PRIMARY,artikelnr,belegnr,ArtikelBeleg ArtikelBeleg 53 const 16140 Using where 1 SIMPLE BELEGE eq_ref PRIMARY,belegart PRIMARY 52 POSITIONEN.belegnr 1 Using where |
AW: Doppel-Select-Anweisung zu langsam
Zitat:
Code:
Zumindest auf meiner Testdatenbank mit ca. 1000000 Datensätzen mit ähnlicher Datenstruktur, wird die eigentlich Abfrage dann in unter einer Sekunde abgearbeitet.
/* Index über SpalteDatum erforderlich */
CREATE VIEW V_SpalteA2012( SpalteA) AS Select distinct SpalteA from Tabelle1 where SpalteDatum between '20120101' and '20121231'; |
AW: Doppel-Select-Anweisung zu langsam
Ich glaub ich muss mir unbedingt mal bissi Literatur zur MySQL-Optimierung besorgen.
|
AW: Doppel-Select-Anweisung zu langsam
Hallo Zusammen,
habe mich von meinem Herzanfall erholt ;-) Ok, Spaß beiseite, ich war gestern geschäftlich unterwegs und konnte mich daher nicht weiter dem Problem wittmen. Ich hatte nicht erwartet, so eine Diskussion loszutreten... Ich habe sie gelesen und das, was ich verstanden habe, auch ausprobiert, aber ohne Erfolg. Selbst nach einer Stunde bekomme ich noch kein Ergebnis...wollte einfach mal wissen, was passiert, wenn ich warte... Ich überlege jetzt einen anderen Ansatz: Für mich ist es nur wichtig, dass ich alle Arbeitsgänge eines Auftrags ausgegeben bekomme. Daher kann ich also auch damit leben, dass ich nur die Aufträge mit allen Arbeitsgängen erhalte, die in dem entsprechenden Zeitraum gestartet und auch beendet wurden. Hier mal ein Beispiel Auftrag...AG...Rückmeldung Diesen Auftrag möchte ich komplett mit allen Arbeitsgängen bekommen 0004711...10...20120105 0004711...20...20120115 0004711...30...20120117 0004711...40...20120123 0004711...50...20120205 Diesen Auftrag will ich komplett mit allen Arbeitsgängen NICHT bekommen, weil der AG 10 in 2011 fertig war 0006874...10...20111231 0006874...20...20120103 0006874...30...20120103 0006874...40...20120103 0006874...50...20120103 Diesen Auftrag will ich komplett mit allen Arbeitsgängen NICHT bekommen, weil der AG 50 in 2013 fertig war 0009632...10...20121205 0009632...20...20121217 0009632...30...20121220 0009632...40...20121228 0009632...50...20130110 Kann mir jemand bei der SQL-Anweisung helfen? Vielen Dank Patrick |
AW: Doppel-Select-Anweisung zu langsam
Also Du hast tatsächlich eines der hier genannten Statements inkl Distinct ausgeführt?
Zeig doch mal bitte und den Ausführungsplan dazu auch! |
AW: Doppel-Select-Anweisung zu langsam
Hallo Jobo,
folgende SQL-Anweisung war nach über einer Stunde noch nicht fertig:
Delphi-Quellcode:
Ich bin nicht der fitteste in SQL. Wenn ich da etwas falsch umgesetzt habe, bin ich um jede Hilfe froh.
select
concat(A.WAAUNR, A.WAAUPO), A.WATENR, A.WAGFMG, A.OAAGBZ, A.OAMANR, DATE_FORMAT(A.OARMDA,"%d.%m.%Y") AS OARMDA, A.OARMMG from as400archiev A ,(select DISTINCT WAAUNR, WAAUPO, OARMDA from as400archiev where OARMDA between '20120101' and '20121231') B where A.WAAUNR=B.WAAUNR and A.WAAUPO=B.WAAUPO Vielen Dank Patrick |
AW: Doppel-Select-Anweisung zu langsam
wofür brauchst Du das OARMDA im subselect?
|
AW: Doppel-Select-Anweisung zu langsam
Stimmt, das hatte ich in einer der vielen Versuche mal mit reingenommen...
Aber an der Geschwindigkeit hat sich nichts geändert... Ich fürchte, so komme ich nicht weiter :cry: |
AW: Doppel-Select-Anweisung zu langsam
Was ist mit Indizes und Ausführungsplänen?
Wieviel DS ergibt das Subselect? Lass Dir doch nicht alles aus der Nase ziehen, hier kann keiner zaubern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz