0

約 125,000 行のデータベースがあり、各行には主キー、いくつかの int 列、およびいくつかの varchar があります。
int 列を追加しましたが、not null 制約を追加する前に入力しようとしています。

データベースはスクリプト ファイルに永続化されます。影響を受けるすべての行が実際の更新の前にメモリにロードされることをどこかで読んだことがあります。つまり、すべての行に対してディスク書き込みが行われるわけではありません。データベース全体は約 20MB です。これは、それをロードして更新を行うのがかなり高速であることを意味します。

したがって、結合も、ネストされたクエリも、基本的な更新もありません。hsql jar にバンドルされているものを含む複数の db マネージャーを試しました。

更新 tbl1 セット col1 = 1

クエリの実行が終了しません。

4

1 に答える 1

1

おそらくメモリが不足しています。

この操作を行う簡単な方法は、列を DEFAULT 1 で定義することです。これは、テーブルのサイズに関係なく、多くのメモリを使用しません。同時に not null 制約を追加することもできます

ALTER TABLE T ADD COLUMN C INT DEFAULT 1 NOT NULL
于 2012-08-05T15:47:23.067 に答える