phpbar.de logo

Mailinglisten-Archive

wie kann das schneller werden...

wie kann das schneller werden...

Michael Donning donning at informenta.de
Fre Mai 16 16:44:33 CEST 2003


Hallo Ulrich,

> -----Original Message-----
> From: Ulrich Seppi [mailto:seppi at idealnet.com]
> Beispiel:
> - suche alle ID welche (kodex=5 oder kodex=6) und kodex=2 haben
>

Explain vor das select gestellt und man erhält ein paar infos, wie mysql
vorgeht.

Andreas hat ja schon einen super Vorschlag gemacht. Es stellt sich die Frage
nach der "Kardinalität" also Werteverteilung.

Wenn kodex 2 häufiger ist würde ich den ins where nehmen, wenn "5 oder 6"
häufiger ist, dann eben die. (sollte eigentlich auch der optimizer
automatisch machen aber nun ja...)

Folgende zwei Indizes sollten für diese "Relation" definiert sein:

1.) Index auf die Kombination ID,Kodex (ist wahrscheinlich schon
(hoffentlich) der Primärschlüssel, Reihenfolge wichtig).
2.) Index auf Kodex (alleine)

Ich greife hier mal Andreas' query auf und ändere sie:

select distinct t1.id
from tabelle t1
inner join tabelle t2 on t2.id=t1.id and (t2.kodex=5 or t2.kodex=6)
where t1.kodex=2

;-)
Zum Wochenende hin sollte man folgende Warnung bedenken:
Self-Joins (wie hier gezeigt) sind grundsätzlich unanständig (also Bäh) und
sollen angeblich auch Blind machen. Bevor man also einen "Error 42:
Tennis-Arm detected." erhält sollte man hierfür je nach Vorliebe lieber
MyGirlfriend, MyBoyfriend bzw. MyWife verwenden.
;-)


Grüße,
Michael Donning

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


php::bar PHP Wiki   -   Listenarchive