-
SQL + Performance
Hi
ich habe folgenes select im interaktiven SQL abgesetzt, es ist rasend schnell
Code:
select 'K1',susunr, susun2, case
when length(replace(replace(sukto1, '-', ''), ' ', ''))=9
then '0' concat replace(replace(sukto1, '-', ''), ' ', '')
when length(replace(replace(sukto1, '-', ''), ' ', ''))=8
then '00' concat replace(replace(sukto1, '-', ''), ' ', '')
when length(replace(replace(sukto1, '-', ''), ' ', ''))=7
then '000' concat replace(replace(sukto1, '-', ''), ' ', '')
when length(replace(replace(sukto1, '-', ''), ' ', ''))=6
then '0000' concat replace(replace(sukto1, '-', ''), ' ', '')
when length(replace(replace(sukto1, '-', ''), ' ', ''))=5
then '00000' concat replace(replace(sukto1, '-', ''), ' ', '')
when length(replace(replace(sukto1, '-', ''), ' ', ''))=4
then '000000' concat replace(replace(sukto1, '-', ''), ' ', '')
when length(replace(replace(sukto1, '-', ''), ' ', ''))=3
then '0000000' concat replace(replace(sukto1, '-', ''), ' ', '')
else replace(replace(sukto1, '-', ''), ' ', '')
end as kto,
replace(replace(sublz1, '-', ''), ' ', '') as blz
from schulp where sukto1 <> ' '
union all
select 'K2',susunr, susun2, case
when length(replace(replace(sukto2, '-', ''), ' ', ''))=9
then '0' concat replace(replace(sukto2, '-', ''), ' ', '')
when length(replace(replace(sukto2, '-', ''), ' ', ''))=8
then '00' concat replace(replace(sukto2, '-', ''), ' ', '')
when length(replace(replace(sukto2, '-', ''), ' ', ''))=7
then '000' concat replace(replace(sukto2, '-', ''), ' ', '')
when length(replace(replace(sukto2, '-', ''), ' ', ''))=6
then '0000' concat replace(replace(sukto2, '-', ''), ' ', '')
when length(replace(replace(sukto2, '-', ''), ' ', ''))=5
then '00000' concat replace(replace(sukto2, '-', ''), ' ', '')
when length(replace(replace(sukto2, '-', ''), ' ', ''))=4
then '000000' concat replace(replace(sukto2, '-', ''), ' ', '')
when length(replace(replace(sukto2, '-', ''), ' ', ''))=3
then '0000000' concat replace(replace(sukto2, '-', ''), ' ', '')
else replace(replace(sukto2, '-', ''), ' ', '')
end as kto,
replace(replace(sublz2, '-', ''), ' ', '') as blz
from schulp where sukto2 <> ' '
Ich 'normalisiere' das Feld KontoNr ( eine alpha Feld )
auf 10 Stellen mit führender 0, ohne blank und -
Da in der Datei 2 KontoNr sind, hänge ich die 2. Nr
einfach dahinter.
Erstelle ich damit eine View und mache ein
Select * from view
warte ich über eine Stunde auf die Anzeige.
Interactiv im SQL, ohne View, habe ich sofort ein Bild.
Auch ein LF (Index) über SUKTO1, SUBLZ1 bringt nix (auch SUKTO2 SUBLZ2)
Muß ich nun die Daten doch physikalisch kopieren
um schnell mit meiner Kontonr einen Debitor zu finden?
Wie kann ich das beschleunigen ?
V5R4, ca 1,25 Mio Debitoren
Danke
Robi
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Die erste Frage die sich mir stellt ist, warum machst du das ?
Kannst du die Daten nicht anders selektieren ?
Der interaktive SQL macht sowieso irgend was anderes, was ich bisher auch noch nicht rausgefunden habe, auch Birgitta hat sich hierzu noch nicht geäußert.
Debug und sonstige Analysen habe da noch nichts gebracht.
Ausserdem enthält dein SQL auch keine Where-Klausel (die bezieht sich auf den Einzelsatz), dann zeigt SQL von Anfang an.
Nun zu deiner View:
Da du mit Sicherheit auf die View mit einer Whereklausel losgehst ist SQL gezwungen einen Tablescan durchzuführen, da diese Where-Klausel erst auf das Ergebnis angewendet werden kann.
Durch die Union auch noch 2 Mal, wenn in der ersten nichts gefunden ist.
Hier hilft nur tatsächlich ein Feld anzuhängen (bzw. 2. Datei), diese mit einem Trigger aus der 1. Datei im passenden Format füllen.
Interaktiv kannst du das auch so machen:
with
MyView as (
Select ...
)
select * from MyView
where ...
Ich denke, interaktiv wirst du da auch nicht schneller.
-
Übrigens versuch mal:
right('0000000000' concat trim(replace(Konto, '-', '')), 10)
-
moin
Die erste Frage die sich mir stellt ist, warum machst du das ?
Kannst du die Daten nicht anders selektieren ?
Habe Daten, die von den Erfassern 'Optisch angenem Lesbar' erfasst wurden. mit -, mit blank, mit ...(diverses)
Bekomme vom Lieferanten nun Kontonr. Immer 10 Stellen, immer ohne Blank.
Und nun soll ich die zuordnen. Ich habe zwar auch einen Namen, diese sind aber noch schlimmer verunstaltet, ggf sogar falsch.
Da du mit Sicherheit auf die View mit einer Whereklausel losgehst ist SQL gezwungen einen Tablescan durchzuführen, da diese Where-Klausel erst auf das Ergebnis angewendet werden kann.
Nö, zum testen ob das so geht wie ich mir das denke, mach ich nur : select * from view (mehr nicht)
Habe nun zunächst die interaktive selektion in eine datei ausgegeben und teste die Erfolgsquote.
Aber ohne Redundante Daten währ es mir 1000 mal lieber.
na dann muß wohl später ein Trigger eine 2. Datei pflegen
Gruß
Robi
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
@interaktives SQL anders: es wird (fast) immer auf die schnelle Anzeige der ersten Sätze optimiert
@View Stunden lang: typischer Bug des Query Optimizers
@zusätzliche Datei: drittbeste Lösung
@zweitbeste Lösung: zusätzliches Feld in derselben Datei per Trigger pflegen
@Lösung: Datenbankdesign korrigieren!!! Kontonummer ist ein Schlüsselfeld - und Hunz in solchen Feldern führt zu Problemen jeder Art (Doubletten inklusiver falscher Zuordnung)
D*B
Similar Threads
-
By schatte in forum IBM i Hauptforum
Antworten: 22
Letzter Beitrag: 16-08-10, 06:26
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By mariupol1963 in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 11-08-06, 13:06
-
By pwrdwnsys in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 16-08-05, 08:56
-
By itec01 in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 16-09-04, 18:38
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks