PDA

View Full Version : create view



Seiten : [1] 2

KingofKning
05-10-09, 10:57
Hallo *all,

da create view nicht wirklich meine Domäne ist habe ich eine Verständnisfrage:

Ich habe insgesamt 3 Dateien die ich in eine View bringen will.

Die erste ist eine Adreßdatei die 2. und 3. jeweils Auftragsdaten.

Ich habe die 2. und 3. so verknüpft:

create view gregor/test01 as
select * from aruakox1pf left outer join
apo01pf on arfa = apfa and arabkz = apabkz and
arfakt = apfakt and aranr = apanr and aruanr = apuanr
and arpos = appos

Das sieht auch schon ganz gut aus. Jetzt will ich das ganze mit der Adreßdatei verknüpfen.

Der Umbau müßte dann sein
create view gregor/test01 as select * from adr01pf where adkto = akid4 (select * from aruakox1pf left outer join
apo01pf on arfa = apfa and arabkz = apabkz and
arfakt = apfakt and aranr = apanr and aruanr = apuanr
and arpos = appos)

Wobei das akid4 in der aruakox1pf ist.

Wie muß dann da bitte die richtige Syntax lauten?

GG

Pikachu
05-10-09, 11:25
Probier mal:

create view gregor/test01 as
select * from aruakox1pf left outer join
apo01pf on arfa = apfa and arabkz = apabkz and
arfakt = apfakt and aranr = apanr and aruanr = apuanr
and arpos = appos
left outer join adr01pf on adkto = akid4

KingofKning
05-10-09, 11:39
Danke,
das sieht doch mal gut aus.

GG

Fuerchau
05-10-09, 12:09
Die Syntax ist doch einfach:

select *
from file1
left join file2 on ...
left join file3 on ...
:
left join filex on ...

Wobei die on-Beziehung sich durchaus z.b. von File2 nach File3 definieren läßt.

KingofKning
05-10-09, 13:03
So ist das halt im Leben, was für den einen einfach ist, ist für den anderen unverständlich.
Amüsiere mich halt recht wenig mit SQL.

GG

KingofKning
07-10-09, 15:08
Hallo *all,

wenn ich das richtig sehe, ist eine view ja nichts anderes als eine logische Datei. Sprich jedesmal wenn in der phy. ein Satz geändert wird, muß die logische nachgezogen werden. Deswegen wollte ich den Wert maint auf *dly setzen.
Er sagt mir aber das es keine Join-Datei wäre.
Ich habe aber doch in meiner View 2 Joins drin, was versteht er bitte unter join was ich nicht verstehe?

GG

Pikachu
07-10-09, 15:34
Eine Sicht (View) besitzt keinen Zugriffspfad.

B.Hauser
07-10-09, 15:54
Eine Sicht (View) besitzt keinen Zugriffspfad.

... und steht deshalb IMMER auf Access Path Maintenance *REBLD.
Im Klartext heißt das, dass Du "tausende" von Views auf der gleichen Datei haben kannst ohne Performance-Einbußen fürchten zu müssen.

Die benötigten Zugriffspfade sind in den Indices hinterlegt. Der Query-Optimizer entscheidet ob und welche Zugriffswege (SQL Indices oder DDS beschriebene geschlüsselte logische Dateien) zur Ausführung der Abfrage (auch bei Angabe einer View) verwendet werden.

Da die Zugriffswege nur in den Indices liegen, und diese bei jedem Insert, Update oder Delete auf die Basis-Datei aktualisiert werden müssen, beeinträchtigen "tausende" von Indices die Performance. Fehlende Indices oder Zugriffswege, sind aber of noch schlimmer, da Table Scans oder Table Probes durchgeführt werden müssen, oder im Extremfall sogar ein temporärer Index (mit allem Overhead) gebildet werden muss.

Birgitta

Fuerchau
07-10-09, 16:29
Auf Grund des fehlenden Zugriffspfades einer View enthält die View auch keine Sortierung (order by)!
Die Sortierung muss beim Select selber angegeben werden, fehlt diese, entscheidet der Optimizer selber (je nach dem ob er einen Zugriffspfad verwenden konnte oder nicht).

KingofKning
07-10-09, 16:33
Hallo Birgitta, da ich ja nun vom Lesen weiß das Dir bei SQL keiner was vormachen kann, kannst Du evtl. nachvollziehen das es Leute gibt die nicht ganz so fit sind. Zum Thema: Du schreibst: "Im Klartext heißt das, dass Du "tausende" von Views auf der gleichen Datei haben kannst ohne Performance-Einbußen fürchten zu müssen. Die benötigten Zugriffspfade sind in den Indices hinterlegt." OK Dann schreibst Du: Da die Zugriffswege nur in den Indices liegen, und diese bei jedem Insert, Update oder Delete auf die Basis-Datei aktualisiert werden müssen, beeinträchtigen "tausende" von Indices die Performance. Häh?! Ohne es jetzt im Detail verstehen zu müßen, weil für mich widerspricht sich das, halte ich fest, eine View macht mein System nicht langsamer. BTW. Wo kann man so etwas nachlesen? GG