phpbar.de logo

Mailinglisten-Archive

Abfrageoptimierung

Abfrageoptimierung

Sebastian Mendel lists at sebastianmendel.de
Mon Jun 19 15:22:58 CEST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Tim Hildebrandt schrieb:
> Hallo Andreas,
> 
> 
> 
>> Im genannten Beispiel heisst das: Möchte ich eine performate 
>> Lösung haben um die Summe von 'filesize' pro user_id zu 
>> ermitteln so kann ich zwar einen einfachen Index auf 
>> 'user_id' verwenden - nur führt das zu Zugriffen auf die 
>> Datendatei weil der Wert für 'filesize' gelesen werden muss. 
>> Lege ich einen Index über 'user_id,filesize' an so erfolgt 
>> die Abfrag ausschließlich im Index.
> 
> Angenommen, ich protokolliere in einer Weblösung die Klicks der Benutzer mit
> und merke mir in einer Protokolltabelle, auf welche Rubrik, welches Dokument
> und welches Bild geklickt wurde. Dann habe ich genau genommen drei Spalten,
> die für mich interessant sind und die alle ggf. einzeln mit COUNT
> ausgewertet werden sollen (natürlich über einen Zeitraum, der seinerseits
> als DATETIME und Index vorliegt). Dann würde es Deiner Ausführung nach mehr
> Sinn machen, einen Gesamtindex über die Spalten "Klickzeitpunkt, RubrikPfad,
> DokumentID, BildID" statt jeweils über die einzelnen Spalten zu erzeugen?

du brauchst einen Index über die Spalten die in der Abfrage im ORDER,
WHERE oder JOIN Teil vorkommen, und die Reihenfolge ist natürlich auch
noch relevant

... wobei neuere MySQL-Versionen auch mehrere Indizes für eine Abfrage
verwenden können ...

... und wenn du eh ALLE Felder der Tabelle benötigst wäre der Index
selber ja genauso groß wie die Tabelle ... weniger praktisch



> Oder geht es dabei konkret um Aggregatfunktionen wie z.B. SUM? Ich denke,
> dass die Menge der Datensätze mittels COUNT auch so recht performant
> ermittelt werden können, oder?

es ging ja nicht um ein simples COUNT(*), und ein COUNT(*) ist auch nur
so performant wie der Index der auf der im WHERE verwendeten Spalte
liegt. (eventuelle JOINS außer Acht gelassen)



- --
Sebastian Mendel

www.sebastianmendel.de
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (MingW32)

iD8DBQFElqUyX/0lClpZDr4RAlkBAJ9beefo58NKGWR+H9nWuLE1xxOvgACfQ+6x
nHrrlKFLOoRFJXQWy+t6L8s=
=MI88
-----END PGP SIGNATURE-----

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


php::bar PHP Wiki   -   Listenarchive