私はMySqlを使用する初心者です。約200,000レコードのテーブルを確認しています。単純なものを実行すると:
SELECT * FROM X WHERE Serial=123
応答(200,000行)が返されるまでに約15〜30秒という長い時間がかかります。
インデックスを追加する前に、単純なselect whereステートメントを返すのに約50秒(700万)かかります。このテーブルは毎日行を増やします。現在、700万行あります。次の方法でインデックスを追加しました。
ALTER TABLE `X` ADD INDEX `index_name` (`serial`)
現在、応答を返すのに109秒かかります。
パフォーマンスを向上させるために、このテーブルにどの初期アプローチを適用する必要がありますか?
MySqlは、約500万から1000万のレコードを持つ大きなテーブルを処理するための正しいツールですか?または、別のツールに移動する必要がありますか?
serial
ある種の数値データ型であると仮定します...
あなたはADD INDEX
一度だけします。通常、インデックスの必要性を予測し、テーブルを作成したときに非常に安価に追加します。
にインデックスが設定されたserial
ので、そのselectは、以外の値で123
非常に高速に実行されます。
が付いた行が1つしかない場合serial = 123
、インデックス付きテーブルは、700万行であろうと70億行であろうと、ミリ秒単位で行を吐き出します。
serial = 123
テーブルの1%に表示される場合、すべての70M行(7Bから)を検索する方が、すべての70K行(7Mから)を検索するよりもはるかに時間がかかります。
インデックスはあなたの友達です!
場合serial
でVARCHAR
、その後、...
プランA:serial
数値型に変更する(適切な場合)、または
プランB:123
文字列を文字列と比較するように、引用符で囲みます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加