1

次のようなクエリの標準ですか?

update A set TextField = 'U'

200 万レコードのテーブルで実行するのに 2 分かかりますか? テーブルには PK もインデックスもありませんが、whereどちらも使用していません。

4

1 に答える 1

2

2 分間で 200 万件のレコードが更新されました。これは 1 秒あたり約 16,000 件の更新であり、IMO ではかなりまともです。

ほとんどの DBMS は、書き込み操作をキャッシュにコミットしたときに戻るだけでなく、書き込み操作が実際に実行されたことを OS が確認するまで待ちます。この機能は、データの整合性を確保するために非常に重要です。これは、db サーバーの重要な品質であることに同意するでしょう。対照的に、selectステートメントは多くの場合、キャッシュから提供できます。

ところで、 Bruce Momjian によるこのプレゼンテーションは興味深いと思うかもしれません。DB サーバーを選択する際に考慮すべきことをうまく説明しています。これは PostgreSQL 中心ですが、彼の説明はすべての種類のデータベース サーバーに有効です。

編集: もう 1 つの興味深い情報源は、Microsoft の Bob Dorr によるこのプレゼンテーションです。これは、SQLServer の IO の 98% が非同期であると述べている興味深いものです。

値が既に含まれている列と null に設定されている列を更新するという観察結果を書いてください。この SO 記事には有用な情報が含まれている可能性があります。TextField列に使用したデータ型はおそらく大きな影響を与えます。

于 2012-09-23T23:55:58.647 に答える