2012-01-17 8 views
1

同じ構造の2つのテーブルが与えられていますが、100Mの行と100の行を持つテーブルがあると、挿入がより多くの行でテーブルに長くかかるでしょうか?MySQLはテーブルサイズの影響を受けますか?

なぜですか?

+2

理論的には、テーブルが大きければ大きいほどインデックスを更新するのに時間がかかり、新しい行を書き込むためにディスク上の空き領域に空きがないかどうかを調べるのに時間がかかります。実際には、確かに言える変数は多すぎます。 –

答えて

3

特に、列の1つがindexedの場合、挿入には100M行に時間がかかります。索引付けのために、新しい挿入行をそれに応じて索引付けする必要があります。これには時間がかかります。索引はselect文の良いオプションですが、挿入が増えれば、挿入に時間がかかるので苦労します。

2

はい。さらに、テーブルにインデックスが設定されている場合このthreadはあなたのために読みやすいかもしれません。

1

はい。特にインデックスのため。その表に対して定義された索引がある場合、各挿入に対して、いくつかの計算を実行する必要があります。

など。索引がソートされた方法で行を順序付けすると言う場合、新しい行を挿入すると、その行の位置を索引列で見つける必要があります。これを行うバイナリ検索アルゴリズムがあるかもしれません。 100行の場合はlog(100)時間がかかりますが、100M行の場合はlog(100M)時間がかかります。

0

索引が列に適用され、索引に従って新しい行が順番に挿入されない場合、索引の中央に値を挿入するとパフォーマンスが低下し、索引が再構成されます。ただし、インサートごとにペナルティは発生しません。 BTREE索引には、索引を再構成することなく、いくつかの新しいノードを中間に挿入する余地があります。

メモリが不足していると、インデックスでページングの問題が発生する可能性があります。

関連する問題