Mailinglisten-Archive |
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