JOIN dauert Minuten?!??!?

JOIN dauert Minuten?!??!?

am 29.03.2006 17:01:14 von theonly.mcseven

Herrje, ich bin am Verzweifeln. Ich habe drei Tabellen:
kunden, kunden_verbaende und umsaetze
~7500 ~8500 ~6000 Einträge

Wenn ich nun an die Kundentabelle per JOIN die
Kundenverbände dranhänge dauert das Minuten;
Obwohl das Kriterium (kunden.pKey) ein 7stelliger
INT ist.
Noch schlimmer wird es, wenn ich an das Gebilde
noch die Umsätze dranklatsche. Dann muß ich den
Rechner neustarten, weil er hängenbleibt.

Und das komische, selbst wenn ich zb mit WHERE
(plz LIKE '8%') den Zielkreis einschränke, gehts nicht
merkbar schneller. HIer mal die ganze Abfrage:

SELECT count(DISTINCT name1) AS anzahl, 'Alle' FROM kunden
LEFT JOIN umsaetze ON umsaetze.kdnr=3Dkunden.kdnr
WHERE (plz=3D$plzstr) AND (umsaetze.kdnr!=3D '0')
UNION
SELECT count(DISTINCT name1) AS anzahl, verband_kurz FROM kunden
LEFT JOIN umsaetze ON umsaetze.kdnr=3Dkunden.kdnr
LEFT JOIN kunden_verbaende ON kunden_verbaende.kunden_pKey=3Dkunden.pKey
WHERE (plz=3D$plzstr) AND (umsaetze.kdnr!=3D '0')
GROUP BY verband_kurz=20

Was mache ich falsch?=20

Danke,=20
Christoph

Re: JOIN dauert Minuten?!??!?

am 29.03.2006 17:24:48 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: JOIN dauert Minuten?!??!?

am 29.03.2006 17:43:01 von Frank Buss

theonly.mcseven@gmx.net wrote:

> Herrje, ich bin am Verzweifeln. Ich habe drei Tabellen:
> kunden, kunden_verbaende und umsaetze
> ~7500 ~8500 ~6000 Einträge
>
> Wenn ich nun an die Kundentabelle per JOIN die
> Kundenverbände dranhänge dauert das Minuten;
> Obwohl das Kriterium (kunden.pKey) ein 7stelliger
> INT ist.
> Noch schlimmer wird es, wenn ich an das Gebilde
> noch die Umsätze dranklatsche. Dann muß ich den
> Rechner neustarten, weil er hängenbleibt.

hast du einen Index auf kunden.pKey gesetzt? Kannst du noch nachträglich
per "alter table kunden add index(pKey)", falls nicht. Auch alle anderen
beteiligten Felder des Joins, die du für die Verknüpfung brauchst, sollten
einen Index haben, so also z.B. kunden_verbaende.kunden_pKey.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de

Re: JOIN dauert Minuten?!??!?

am 31.03.2006 22:34:45 von christoph.soellner

Hi,
> hast du einen Index auf kunden.pKey gesetzt? Kannst du noch nachträglich
> per "alter table kunden add index(pKey)", falls nicht. Auch alle anderen
> beteiligten Felder des Joins, die du für die Verknüpfung brauchst, sollten
> einen Index haben, so also z.B. kunden_verbaende.kunden_pKey.

Danke euch beiden, ja die Indizes waren es...
Christoph