SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 02.03.2006, 13:10:04
böseMietzekatze böseMietzekatze ist offline
Anfänger
 
Registriert seit: Mar 2006
Beiträge: 1
Optimierungs-problem

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>&nbsp;</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>&nbsp;</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>&nbsp;</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
Mit Zitat antworten
  #2  
Alt 03.03.2006, 09:43:40
diver-network diver-network ist offline
Junior Member
 
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
AW: Optimierungs-problem

Hi,

ohne Deinen SQL genauer angesehen zu haben meinen Vermutung:

Du benutzt zur Verknüpfung der Tabellen sinngemäß SELECT ...FROM tabelle1 AS t1,tabelle2 AS t2,... WHERE t1.feld = t2.feld

Dies führt in ziemlich vielen Fällen zu Kreuzprodukten und zu einer üblen Performance bei den Selects.

Abhilfe:

SELECT ... FROM tabelle1 AS t1 INNER JOIN tabelle2 AS t2 ON t1.feld = t2.feld INNER JOIN tabelle3 AS t3 ON t2.feld2 = t3.feld

Versuch's mal damit und meld' Dich, wenn es nichts geholfen hat.

HTH,

Andy

P.S.: Das Ergebnis Deines EXPLAINs solltest Du besser als PlainText eintragen und nicht den HTML- Quelltext ins Forum stellen. Ist einfach besser zu lesen und nimmt weniger Platz weg ;-)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mir FPDF (genauer HTML2FPDF) Spark PHP für Fortgeschrittene und Experten 0 24.02.2006 09:06:02
Habe da ein Problem mit dem auslesen einer txt Datei flyscorpion PHP Grundlagen 2 06.01.2006 14:36:46
Problem mit Lokalisierung eines SESSION - Problems Fabian85 PHP für Fortgeschrittene und Experten 5 03.10.2005 20:17:54
mysql und php problem schmidt PHP für Fortgeschrittene und Experten 9 31.10.2003 18:05:13
SSL Problem im Internet Explorer, need help! Gladder PHP für Fortgeschrittene und Experten 6 02.09.2002 22:21:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:47:02 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt