Re: Warum ist MySQL hier so langsam? [Zusammenfassung]
am 18.12.2007 17:02:47 von Christian SchmelzerChristian Schmelzer wrote:
> Hallo,
> folgende Tabelle enthält ca. 110 Mio Datensätze.
>
> CREATE TABLE `c` (
> `sid` bigint(19) unsigned NOT NULL default '0',
> `cid` mediumint(6) unsigned NOT NULL default '0',
> `times` int(10) unsigned NOT NULL default '0',
> `ranking` smallint(3) unsigned NOT NULL auto_increment,
> UNIQUE KEY `sid_2` (`sid`,`ranking`),
> KEY `sid` (`sid`)
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1
>
>
> explain select cid, count(distinct(sid)) AS anz FROM c GROUP BY cid
> ORDER BY anz;
>
+----+-------------+----------------+------+---------------+ ------+---------
> +------+-----------+---------------------------------+
>> id | select_type | table | type | possible_keys | key |
>> key_len ref | rows | Extra |
>
+----+-------------+----------------+------+---------------+ ------+---------
> +------+-----------+---------------------------------+
>> 1 | SIMPLE | contents_large | ALL | NULL | NULL |
>> NULL NULL | 112778690 | Using temporary; Using filesort |
>
+----+-------------+----------------+------+---------------+ ------+---------
> +------+-----------+---------------------------------+
>
Hallo,
also ich habe zu Testzwecken den redundanten Key "sid" entfernt und jeweils
ALTER TABLE c ADD INDEX fast1 (sid,cid);
und
ALTER TABLE c ADD INDEX fast1 (cid,sid);
getestet. Explain zeigte dann auch dass ein Index genutzt wurde: "Using
index; Using temporary; Using filesort"
Aber, Mysql wurde im ersten Fall nur unwesentlich schneller, im zweiten Fall
gar nicht. Ich werde den Test noch mit Mysql 5.1 wiederholen.
Insgesamt bin ich aber doch verwundert was während des "copying to tmp
table" passiert und warum das so lange dauert.
Christian