countはMyISAMの方が速い

実際にやってみた

MyISAMの方が速いのは知っていたのですが、どのくらい速いのか試したことないなーっと思ってやってみました。

mysql> select count(*) from hogehoge;

                      • +
count(*)
                      • +
3524448
                      • +

1 row in set (18.88 sec)

mysql> alter table hogehoge engine='MyISAM';
Query OK, 3524448 rows affected (1 min 0.29 sec)
Records: 3524448 Duplicates: 0 Warnings: 0

mysql> select count(*) from hogehoge;

                      • +
count(*)
                      • +
3524448
                      • +

1 row in set (0.03 sec)

mysql> alter table hogehoge engine='InnoDB';
Query OK, 3524448 rows affected (2 min 8.28 sec)
Records: 3524448 Duplicates: 0 Warnings: 0

mysql> select count(*) from hogehoge;

                      • +
count(*)
                      • +
3524448
                      • +

1 row in set (1.07 sec)

mysql> alter table hogehoge engine='MyISAM';
Query OK, 3524448 rows affected (57.29 sec)
Records: 3524448 Duplicates: 0 Warnings: 0

mysql> select count(*) from hogehoge;

                      • +
count(*)
                      • +
3524448
                      • +

1 row in set (0.03 sec)

最初はInnoDBです。1回目はキャッシュに乗ってないから18秒とかかかってると思います。

なのでストレージエンジンを変えたりして何度か試してみました。
33倍くらい違いました。
count(*)でやってるからこのくらいの差があるんでしょうね。


すいません、それだけです。

彡サッ