Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: DB Tabelle beschleunigen

  Alt 12. Jul 2019, 15:13
Hallo,
Indexdefinition = Welche Indizes gibt es.

select max(a.waaunr) from as400archiev as a
where a.watenr=:artikel
and left(a.oamanr,2) in (SELECT arbeitsplatzkz from bereiche
where bereiche_text= :bereich )
group by a.oamanr

Das in (also das SubSelect) könnte bei MySQL zu Problemen führen,
wenn der SQL-Server das für jeden einzelnen Datensatz ausführt.
Mach mal 2 Queries draus, hole dir mit Query1 die arbeitsplatzkz
und benutze das Ergebnis Query2 (Select max).

SubSelects
https://stackoverflow.com/questions/...low-workaround

MySQL müsste auch einen Planalyzer haben, der einen Query-Plan erzeugt,
also sagt, wie der DB-Server intern eine Query abarbeitet.

Wenn dann z.B. bei
SELECT arbeitsplatzkz from bereiche
where bereiche_text= :bereich
steht natural scan, muss die komplette Tabelle durchlaufen werden, um das Ergebnis zu bekommen.
Liegt ein Index auf bereiche_text, würde der die Suche beschleunigen.



Zu meinen Fragen:
1.9 Sekunden bei Select* und Select ein_Feld.

Tja, ein Planalyzer könnte dir jetzt sagen, ob die Query-Ausführung (Execute) langsam war,
oder das Übermitteln der Daten über das Netz (Fetch).

Ohne einen Planalyzer könntest Du deine Anwendung auch auf dem SQL-Server mal selber laufen lassen.
Dann ist der Netzeinfluss erst mal weg.
Heiko

Geändert von hoika (12. Jul 2019 um 15:29 Uhr)
  Mit Zitat antworten Zitat