Hallo Leute,
ich möchte eine Auswertung machen
Warengruppe , Umsatz Febuar 2004, Umsatz Februar 205, Umsatz Februar 2006
dazu habe ich mir folgende Abfrage geschrieben.
Code:
explain SELECT Warengruppe,
SUM(rp.Menge*rp.Rechnungs_preis) `Umsatz Feb. 2004`,
SUM(rp1.Menge*rp1.Rechnungs_preis) `Umsatz Feb. 2005`,
SUM(rp2.Menge*rp2.Rechnungs_preis) `Umsatz Feb. 2006`
FROM `ShopSeiten` ss,
`ShopUnterwarengruppen` su,
`ShopWarengruppen` sw,
`Z_shopseiten` zs,
`ArtikelKatalog` ak,
RechnungKopf rk,
RechnungPosition rp,
`RechnungKopf` rk1,
`RechnungPosition` rp1,
`RechnungKopf` rk2,
`RechnungPosition` rp2
WHERE rk.ID = rp.RechnungID AND
rk.HaendlerID = rp.HaendlerID AND
rk1.ID = rp1.RechnungID AND
rk1.HaendlerID = rp1.HaendlerID AND
rk2.ID = rp2.RechnungID AND
rk2.HaendlerID = rp2.HaendlerID AND
rp.Artikel = ak.Bestellnummer AND
rp1.Artikel = ak.Bestellnummer AND
rp2.Artikel = ak.Bestellnummer AND
MONTH(rk.Rechnung_Datum) = 2 AND
YEAR(rk.Rechnung_Datum) = 2006 AND
MONTH(rk1.Rechnung_Datum) = 2 AND
YEAR(rk1.Rechnung_Datum) = 2005 AND
MONTH(rk2.Rechnung_Datum) = 2 AND
YEAR(rk2.Rechnung_Datum) = 2004 AND
ak.EAN = zs.EAN AND
zs.SeitenID = ss.ID AND
ss.UnterwarengruppenID = su.ID AND
su.WarengruppenID = sw.ID
GROUP BY Warengruppe
Explain ergibt folgendes
HTML-Code:
<table id="table_results" border="0" cellpadding="2" cellspacing="1">
<!-- Results table headers -->
<tbody><tr>
<th>
id
</th>
<th>
select_type
</th>
<th>
table
</th>
<th>
type
</th>
<th>
possible_keys
</th>
<th>
key
</th>
<th>
key_len
</th>
<th>
ref
</th>
<th>
rows
</th>
<th>
Extra
</th>
</tr>
<!-- Results table body -->
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>rp</td>
<td>ALL</td>
<td>Rechnungsnummer,RechnungID,Artikel</td>
<td><i>NULL</i></td>
<td><i>NULL</i></td>
<td><i>NULL</i></td>
<td>146893</td>
<td>Using temporary; Using filesort</td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>ak</td>
<td>ref</td>
<td>PRIMARY,EAN</td>
<td>PRIMARY</td>
<td>4</td>
<td>oekokaufhaus.rp.Artikel</td>
<td>1</td>
<td> </td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>zs</td>
<td>ref</td>
<td>Seite,Seiten,EAN</td>
<td>Seite</td>
<td>30</td>
<td>oekokaufhaus.ak.EAN</td>
<td>1</td>
<td>Using index</td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>rk</td>
<td>eq_ref</td>
<td>PRIMARY</td>
<td>PRIMARY</td>
<td>8</td>
<td>oekokaufhaus.rp.HaendlerID,oekokaufhaus.rp.Rechnun...</td>
<td>1</td>
<td>Using where</td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>ss</td>
<td>eq_ref</td>
<td>PRIMARY,ID</td>
<td>PRIMARY</td>
<td>4</td>
<td>oekokaufhaus.zs.SeitenID</td>
<td>1</td>
<td> </td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>rp1</td>
<td>ref</td>
<td>Rechnungsnummer,RechnungID,Artikel</td>
<td>Artikel</td>
<td>5</td>
<td>oekokaufhaus.ak.Bestellnummer</td>
<td>32</td>
<td>Using where</td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>rk1</td>
<td>eq_ref</td>
<td>PRIMARY</td>
<td>PRIMARY</td>
<td>8</td>
<td>oekokaufhaus.rp1.HaendlerID,oekokaufhaus.rp1.Rechn...</td>
<td>1</td>
<td>Using where</td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>rp2</td>
<td>ref</td>
<td>Rechnungsnummer,RechnungID,Artikel</td>
<td>Artikel</td>
<td>5</td>
<td>oekokaufhaus.ak.Bestellnummer</td>
<td>32</td>
<td>Using where</td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>rk2</td>
<td>eq_ref</td>
<td>PRIMARY</td>
<td>PRIMARY</td>
<td>8</td>
<td>oekokaufhaus.rp2.HaendlerID,oekokaufhaus.rp2.Rechn...</td>
<td>1</td>
<td>Using where</td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>su</td>
<td>ref</td>
<td>UnterwarengruppenID,WarengruppenID</td>
<td>UnterwarengruppenID</td>
<td>4</td>
<td>oekokaufhaus.ss.UnterwarengruppenID</td>
<td>13</td>
<td>Using where</td>
</tr>
<tr>
<td>1</td>
<td>SIMPLE</td>
<td>sw</td>
<td>ref</td>
<td>ID</td>
<td>ID</td>
<td>4</td>
<td>oekokaufhaus.su.WarengruppenID</td>
<td>3</td>
<td> </td>
</tr>
</tbody></table>
warum benutzt er bei Der Tabelle RechnungPosition einmal keinen KEY und dann doch wieder ? (rp1,rp2)
alle Felder in der WHERE Bedingung sind als KEY definiert und der jewilige Foreign Key hat auch die selbe größe ANALYZE TABLE ist gemacht
trotzdem will er ohne KEY zu benutzen 14000 Datensätze durchsuchen :-(
wer hat einen Tipp?
Gruss
Die böse Mietzekatze