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(*)でやってるからこのくらいの差があるんでしょうね。
すいません、それだけです。
彡サッ |