phpbar.de logo

Mailinglisten-Archive

Abfrage Speed

Abfrage Speed

ibekowies at shavingkiwis.de ibekowies at shavingkiwis.de
Sam Jul 24 12:25:44 CEST 2004


Hallo!

Mysql kann soweit ich weiss nur _einen_ index pro tabelle pro query benutzen, auch 
wenn die Tabelle mehrere haben kann. Bei dir waere er am sinnvollsten auf der Spalte, 
nach der sortiert wird. Theoretisch braucht er dann nur die ersten 20 index eintraege 
lesen (der index ist ja bereits sortiert), und die entprechenden zeilen zeilen zu holen.

Problem: Da dort dann ja aber auch noch die aussortiert werden muessen die den 
richtigen status haben muss er dann doch mehr zeilen holen. Schlimm waere es wenn, 
wenn die ersten 490.000 Zeilen nicht passen.

In so einem Fall macht ein Compound-Key Sinn - Das ist ein zusammengesetzter 
Schlüssel (Index) der auf allen 3 Spalten sitzt.

Das sollte das Lesen (select) erheblich beschleunigen. (Das Schreiben (Insert, Update) 
wird durch den Index natuerlich verlangsamt)

Vielleicht hilft es dir.

Ansonsten siehe "Explain" Befehl.

Gruesse Ilja


On 23 Jul 2004 at 20:00, Andreas Stagl wrote:

> 
> Hallo Namenloser,
> 
> News schrieb:
> 
> ><...>
> >Hm, aber dort steht nru 1 oder 0 drin. Warum muss sowas indiziert werden
> >? 
> >
> >Wenn ich sage
> >
> >Nehme die ersten 20 Einträge die bei status=1 haben warum wird er dann
> >so langsam . Die Wahrscheinlichkeit das er was findet ist doch recht
> >gross
> >  
> >
> Nur sagst Du halt nicht "nimm die ersten 20 mit status=1". Du sagst 
> "nimm ALLE mit status=1 und status_who=1, sortiere das Ergebnis nach 
> last_change und davon liefere mir dann die ersten 20 Zeilen".
> 
> LG,
> Andy
> 
> -- 
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql 
> 
> 


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive