ここで、stackoverflow、ブログ投稿、チュートリアルなどの投稿を山ほど読みましたが、MySQL データベースのかなり厄介なパフォーマンスの問題をまだ解決できていません。大規模な MySQL データベースに関しては、私は初心者であることを覚えておいてください。
私は約のテーブルを持っています。11.000.000 行 (20.000.000 以上に増加します)。レイアウトは次のとおりです。
CREATE TABLE `myTable` (
`intcol1` int(11) DEFAULT NULL,
`charcol1` char(25) DEFAULT NULL,
`intcol2` int(11) DEFAULT NULL,
`charcol2` char(50) DEFAULT NULL,
`charcol3` char(50) DEFAULT NULL,
`charcol4` char(50) DEFAULT NULL,
`intcol3` int(11) DEFAULT NULL,
`charcol5` char(50) DEFAULT NULL,
`intcol4` int(20) DEFAULT NULL,
`intcol5` int(20) DEFAULT NULL,
`intcol6` int(20) DEFAULT NULL,
`intcol7` int(11) DEFAULT NULL,
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
FULLTEXT KEY `idx` (`charcol2`,`charcol3`)
) ENGINE=MyISAM AUTO_INCREMENT=11665231 DEFAULT CHARSET=latin1;
次のような select ステートメント
SELECT * from myTable where charchol2='bogus' AND charcol3='bogus2';
実行には 25 秒ほどかかります。これは遅すぎます。テーブルが大きくなるにつれてさらに遅くなります。
テーブルには (いわば) 挿入も更新もまったく含まれず、主に char 列の検索を出力するために使用されます。
インデックス作成を機能させようとしましたが (ご覧のとおり、FULLTEXT をいじってみました)、何かが足りないようです。パフォーマンスを高速化する方法はありますか?
注意: 現在、私の Macbook Air (1.7 GHz i5、4GB RAM) で MySQL を実行しています。これがパフォーマンスの問題に対する唯一の答えである場合は、データベースを適切なものに移動します;-)
編集:テーブルの説明
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE myTable ALL NULL NULL NULL NULL 11596725 where の使用