phpbar.de logo

Mailinglisten-Archive

Abfrageoptimierung

Abfrageoptimierung

Andreas Müller mysql at universalware.de
Don Jun 15 11:33:03 CEST 2006


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.

Viel Spass beim grübeln :-)

Gruß,
Andreas


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


php::bar PHP Wiki   -   Listenarchive