left join auf 2 Felder

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

left join auf 2 Felder

Beitrag von Manfred »

folgendes ist gegeben:

Code: Alles auswählen

select kd.id,
	   kd.name,
	   kd.vorname,
	   zstart.zonennummer AS Startzone,
  	   zziel.zonennummer AS Zielzone,
	   rel.relationbez,
	   rel.zonennummerstart as relstart,
	   rel.zonennummerziel as relziel,
	   rel.tariffenstercode,
	   ts.preisstufecode,
	   ts.ticketartcode,
	   ta.ticketartbez,
	   pst.preis,
	   ta.gueltigbis
from mandanten kd
LEFT JOIN gemeinsamedaten.haltestellen hststart on hststart.id = kd.idhaltestellestart
LEFT JOIN gemeinsamedaten.haltestellen hstziel on hstziel.id = kd.idhaltestelleziel
left join gemeinsamedaten.zonen zstart on zstart.idhaltestelle=hststart.id
left join gemeinsamedaten.zonen zziel on zziel.idhaltestelle=hstziel.id
right join gemeinsamedaten.relation rel ON rel.zonennummerstart=zstart.zonennummer
left join gemeinsamedaten.ticketsortiment ts on ts.relationbez=rel.relationbez
left JOIN gemeinsamedaten.ticketarten ta on ta.ticketartcode=ts.ticketartcode
left JOIN gemeinsameDaten.preis pst on pst.preisstufecode=ts.preisstufecode and pst.ticketartcode = ts.ticketartcode <---- hier hin schauen
where kd.id = '{#idmandant#}' and rel.relationbez=zstart.zonennummer + '-' + zziel.zonennummer
ORDER by Val(pst.preis)
in der Tabelle preis ist aber nur auf preisstufecode bzw auf ticketartcode ein Index drauf.
Müßte/könnte man den Indexschlüssel kombinieren um das Tempo zu erhöhen, oder ist es egal?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: left join auf 2 Felder

Beitrag von Marcus Herz »

Ne, das ist ok so, 2 Indices, jeweils auf ein Feld.
Man kann es testen, ob ein zusammengestezter Index schneller ist. Kann ich mir nicht vorstellen. Wieviele Datensätze hat die Preis?
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: left join auf 2 Felder

Beitrag von Manfred »

etwas über 2000.
dürfte also egal sein.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: left join auf 2 Felder

Beitrag von Marcus Herz »

auf jeden Fall egal.
Hat eine Datei weing Sätze, dann wird nicht mal ein Index verwendet, weil ein Tablescan schneller ist. Wo die Grenze liegt oder durch was diese definiert ist, ist mir nicht bekannt. Aber irgendwo in der Doku staht dazu was.
Sprich: eine Datei mit 100 Sätzen braucht keinen Index für SQL Where Bedingung. Für Xbase Seek schon.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Antworten