0

ここで、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 の使用

4

1 に答える 1

0

等値演算子が使用されているこのようなリクエストでは、FULLTEXT インデックスを作成する必要はありません。WHERE 条件で使用されるすべての char フィールドにインデックスを作成し、フルテキスト インデックスを削除するだけです。

DROP INDEX idx;
ALTER TABLE myTable ADD INDEX charchol_idx (charchol2, charchol3);
于 2013-09-27T10:15:11.007 に答える