-
SQL index auf view
Hallo
wir haben in einer Datei 2 Namen.
Einmal ER, einmal SIE
um bei Fremddaten die richtige Anrede zu bestimmen habe ich eine View auf die Datei gelegt.
PHP-Code:
create view VORNAMEN as( select distinct anrede, upper(vna1) as vnam from DATEI where anrede=1 union all select distinct anrede, upper(vna2) as vnam from DATEI where anrede=2);
nun möchte ich schnell nach einem Namen suchen (SQLRPGLE)
PHP-Code:
/exec sql + set :myanrede = (select min(anrede) from VORNAMEN where upper(:myvorname) = vnam) /end-exec
Dazu wollte ich einen Index auf VORNAMEN legen.
Das geht aber nicht
Welchen Index muß ich anlegen, es sind ja in der Basis Datei 2 Felder, und das Upper kommt ja auch hinzu.
Danke
Dietlinde Beck
-
Einen Index auf Views gibt es nicht sondern nur auf Tables.
Du kannst aber einen berechneten Index "upper(Vname)" erstellen.
Wenn die Where-Klausel dann genau mit dieser Berechnung übereinstimmt, wird der Index auch verwendet.
... where upper(: MyVname) = upper(Vname)
"Distinct" führt aber u.U. trotzdem zum Tablescan.
-
Hallo und danke,
D.H. ich mache das distinct weg
--> geht ein group?
und erzeuge 2 (ZWEI) Indexe je einen auf upper(VNAM1) und einen auf upper(VNAM2)
und hoffe dann das sql BEIDE verwendet?
Oder was bedeutet "berecheten Index"
Dibe
-
Die View brauchst du nicht.
Create Index MyIndex1 on MyTable (upper(Name))
Create Index MyIndex2 on MyTable (upper(VName))
select min(Anrede) from MyTable where upper(name) = 'FÜRCHAU' or upper(VName) = 'FÜRCHAU'
Ob tatsächlich beide Indizes verwendet werden hängt von vielen Optimierungskriterien ab.
Wichtig ist, dass die Where-Klausel einem Index entsprechen muss. Eine Berechnung in der View wird ignoriert.
-
Wie ist die Datei aufgebaut?
Was steht in vnam1 und vnam2?
-
Ich nehme mal an "Vornamen";-).
-
Der Aufbau
Anrede
Nachname
Vnam1
Vnam2
Iban1
Iban2
...
Der Inhalt
1
meier
Hugo
./.
DE12...
./.
2
müller
./.
Heike
./.
DE44 ...
3
Schmitt
hans
inge
DE12...
DE44...
Nun bekomme ich von exten Daten
Mal Hans, mal Inge aber immer ohne die Info Mann/Frau
Das wollte ich mit EINEM Zugriff ermitteln
Dietlinde Beck
-
... und auch mal Dominique? :-)
-
selbstverständlich
siehe oben
/exec sql
+ set :myanrede = (select min(anrede) from VORNAMEN where upper(:myvorname) = vnam)
/end-exec
-
Lege doch einfach mal die Indizes an und prüfe das Ergebnis mit der entsprechenden Abfrage auf die Tabelle. Für MIN(xxx) benötigst du nämlich keinen distinct vorher, also:
select min(anrede) from datei
where upper(: myvorname) = upper(vna1)
or upper(: myvorname) = upper(vna2)
Durch die Prüfung "upper(vna1)" sollte der passende Index1 gewählt werden.
Dies ist der Grund für "berechnete" indizes, dass diese gewählt werden, wenn die Abfrage eine genau identische Where-Klausel aufweist.
-
Müßte die View nicht besser so lauten?
CREATE VIEW VORNAMEN AS (
SELECT DISTINCT 1 AS ANREDE, UPPER(VNAM1) AS VNAM FROM Datei WHERE VNAM1<>'' UNION
SELECT DISTINCT 2 AS ANREDE, UPPER(VNAM2) AS VNAM FROM Datei WHERE VNAM2<>'')
-
Dann habe ich keine doppelten Vornamen ER und Sie.
dann müßte ich all diese Namen kennen.
so kann ich sie suchen!
Gerade bei Ausländischen Namen sehr hilfreich, auch um ggf zu ermitteln, das der Name NICHT für beide Geschlechter gültig ist. Dann ist ER eine Sie und das geschlecht wurde falsch angegeben.
Herr Fuerchau
das haben wir nun so gemacht, danke!
DiBe
Similar Threads
-
By malzusrex in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 19-10-16, 18:53
-
By ExAzubi in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 19-07-16, 11:44
-
By woodstock99 in forum NEWSboard Programmierung
Antworten: 31
Letzter Beitrag: 18-03-15, 13:29
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 29-12-14, 12:01
-
By tarkusch in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 06-11-13, 11:44
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