Re: JOIN Problem
Von: Oliver Benning (oliver@treibhaus.ping.de) [Profil]
Datum: 05.06.2008 16:04
Message-ID: <g28rop$4nq$1@lucy.ping.de>
Newsgroup: de.comp.datenbanken.mysql
Datum: 05.06.2008 16:04
Message-ID: <g28rop$4nq$1@lucy.ping.de>
Newsgroup: de.comp.datenbanken.mysql
"Andreas Kretschmer" <akretschmer@spamfence.net> schrieb im Newsbeitrag news:qr6lh5-0lu.ln1@akretschmer.selfip.info... > begin Oliver Benning schrieb: >> >> "Andreas Kretschmer" <akretschmer@spamfence.net> schrieb im Newsbeitrag >> news:tm4lh5-lop.ln1@akretschmer.selfip.info... >>> begin Oliver Benning schrieb: >>>> Hallo, >>>> >>>> Wie kriege ich jetzt den nächsten freien "lfd_index" für die gruppe_nr >>>> "250", um einen neuen Datensatz einzufügen? Der nächste freie Index >>>> wäre >>>> "C" >>>> für gruppe_nr 250, für gruppe_nr 500 wäre es E. >>> >>> select lfd_index from TabelleA where lfd_index > (select max(lfd_index) >>> from TabelleB where gruppe = (select gruppe from Tabellec where >>> gruppe_nrP0)) order by lfd_index limit 1; >> >> Geht das auch ohne Sub-Selects? Ich hab damit ein ziemliches >> Performance-Problem. > > select a.lfd_index from TabelleA a inner join (select max(lfd_index) as > idx from TabelleB b left join Tabellec c on (b.gruppe=c.gruppe) where > c.gruppe_nrP0) foo on a.lfd_index > foo.idx order by 1 limit 1; Auf meinem lokalen System liefert der SELECT ohne LIMIT 1 nur 4 Datensätze (obwohl in TabelleA ca. 5000 sind) in 0.05 Sekunden, auf unserem MySQL 5.1 Cluster dauerts dann schon 30 Sekunden und es werden alle 5000 geliefert, obwohl einige lfd_index Nummern vergeben sind. Die Indices sind korrekt.[ Auf dieses Posting antworten ]
Antworten
- Andreas Kretschmer (05.06.2008 16:11)
- Oliver Benning (05.06.2008 16:18)
