CAT760を使ってmysqlの検索性能を試験してみました。
準備 †
- CAT760、ストレージにはCFを利用
- mysql 4.1.11
- カラム数20,データ数6万のダミーデータ
- 第一カラムはユニーク値
表形式
id | c1 | c2 | | c19 | c20 |
id000000 | pkDHTxmM | R18N2l9k | 略 | 88EmLgN7 | cCCTt9rW |
id000001 | OMKV8DoA | US6i7OPD | 略 | fHjIUd7A | xPoBShF3 |
略 | | | | | |
id059999 | gVtRdmzO | B56ZFEC9 | 略 | lGfn8z79 | yXa42AjW |
データ形式
Field | Type | Null | Key | Default | Extra |
id | varchar(8) | YES | MUL | NULL | |
c1 | tinytext | YES | | NULL | |
c2 | tinytext | YES | | NULL | |
c3 | tinytext | YES | | NULL | |
略 | | | | | |
c18 | tinytext | YES | | NULL | |
c19 | tinytext | YES | | NULL | |
c20 | tinytext | YES | | NULL | |
以上のような単一テーブルをmysqlにインポートして SELECT 文の実行時間を計測する
結果 †
- インデックスからの検索
(例:ユーザ番号(=ユニーク値)が分かっていて住所を調べるなど)
mysql> SELECT id,c1,c2,c3,c4 FROM gomi WHERE id="id059986";
+----------+----------+----------+----------+----------+
| id | c1 | c2 | c3 | c4 |
+----------+----------+----------+----------+----------+
| id059986 | fmmeS2aH | m6pxKxZW | I5mfyrPd | rul9Qsew |
+----------+----------+----------+----------+----------+
1 row in set (0.01 sec)
- データからの検索
(例:住所など文字列からの検索など)
mysql> SELECT id,c1,c2,c3,c4 FROM gomi WHERE c8="ncA4Keqc";
+----------+----------+----------+----------+----------+
| id | c1 | c2 | c3 | c4 |
+----------+----------+----------+----------+----------+
| id059986 | fmmeS2aH | m6pxKxZW | I5mfyrPd | rul9Qsew |
+----------+----------+----------+----------+----------+
1 row in set (1.69 sec)
- 検索結果が複数になる検索 (c1の頭がABで始まる全て)
(例:海老原さん全員検索など)
mysql> SELECT id,c1,c2,c3,c4 FROM gomi WHERE c1 LIKE "AB%";
+----------+----------+----------+----------+----------+
| id | c1 | c2 | c3 | c4 |
+----------+----------+----------+----------+----------+
| id000178 | aBnj3iSo | GQJPCdmN | j9QD1hyf | jjAuIMBg |
| id001188 | AbjPjkJb | X5fSgRIw | ZveAf9JT | TuHV9Hx9 |
| id001237 | Ab8jVM4i | uKYGdMpr | S3cUWLuY | kvfJ5IS6 |
略
| id058572 | AbSQ9O0H | FQKMPWVM | zk0U9GGg | GxMCUOCU |
+----------+----------+----------+----------+----------+
66 rows in set (1.75 sec)
mysql> SELECT id,c1,c2,c3,c4 FROM gomi WHERE c1 LIKE "AB%";
+----------+----------+----------+----------+----------+
| id | c1 | c2 | c3 | c4 |
+----------+----------+----------+----------+----------+
| id000178 | aBnj3iSo | GQJPCdmN | j9QD1hyf | jjAuIMBg |
| id001188 | AbjPjkJb | X5fSgRIw | ZveAf9JT | TuHV9Hx9 |
| id001237 | Ab8jVM4i | uKYGdMpr | S3cUWLuY | kvfJ5IS6 |
略
| id058572 | AbSQ9O0H | FQKMPWVM | zk0U9GGg | GxMCUOCU |
+----------+----------+----------+----------+----------+
66 rows in set (0.01 sec)
結果まとめ †
- ユニーク値が振られていれば、一瞬(0.00秒 あるいは 0.01秒)で検索終了
- 20x60,000 の表形式のテキストデータから任意の検索は2秒未満
- データがキャッシュされていれば一瞬で終わる
リンク †