phpbar.de logo

Mailinglisten-Archive

Abfrageoptimierung

Abfrageoptimierung

Sebastian Mendel lists at sebastianmendel.de
Don Jun 15 12:07:33 CEST 2006


Andreas Müller schrieb:
> Hallo zusammen,
> 
> ich hab da mal eine kleine Denksport-Aufgabe:
> 
> Ich habe eine Tabelle mit rund 150.000 Datensätzen. Die Tabelle enthält die
> Daten von hochgeladenen bzw. vom Server daraus erzeugten Dateien. Zu
> Replikations- und Backup-Zwecken wird der Inhalt der Dateien mit in der
> Datenbank gespeichert. Im Durchschnitt ist jeder Datensatz 10 KB groß. Damit
> ist die gesamte Tabelle rund 1,5 GB groß.
> 
> CREATE TABLE `files` (
>   `file_id` int(11) NOT NULL auto_increment,
>   `user_id` int(11) NOT NULL,
>   `filekey` varchar(32) NOT NULL,
>   `filename` varchar(255) NOT NULL,
>   `filesize` int(11) NOT NULL,
>   `filedate` datetime NOT NULL,
>   `contenttype` varchar(255) NOT NULL,
>   `data` longblob,
>   PRIMARY KEY  (`file_id`),
>   UNIQUE KEY `filekey` (`filekey`),
>   KEY `user_id` (`user_id`),
> ) ENGINE=MyISAM;
> 
> Nun möchte ich gern die Summe von 'filesize' über alle Datensätze haben:
> 
> SELECT Sum(filesize) FROM files;
> 
> Auf Grund der größe der Tablelle dauert diese Abfrage recht lang (ca. 60
> Sekunden).
> 
> Wie kann man das beschleunigen und warum funktioniert das ? Eine Aufteilung
> in zwei Tabellen z.B. eine mit dem Blob Feld und eine mit den restlichen
> Daten ist keine gewüschte Lösung.

na eventuell hilft ja ein Index auf die Spalte, kommt drauf wie oft 
diese Abfrage benötigt wird und somit den Nachteil der eventuell 
langsameren Inserts aufwiegt.

-- 
Sebastian

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


php::bar PHP Wiki   -   Listenarchive