VB6.0 ADO について質問したいです。
例えば、テーブルAに データが10万件入ってるとします。
ここに、1件データをaddnewで追加したいです
① Rs.open "Select * from テーブルA" ,cn 〜
② Rs.open "Select ID from テーブルA" ,cn 〜
③ Rs.open "Select ID form テーブルA Where ID = 0" ,cn 〜 (0は存在しない)
rs.AddNew
rs.fields("id") = x
rs.update
①も②も③も、メモリ使用量は同じなのですか? ①は多くなると思いますが、
②と③はどれくらい違うのでしょうか?
カーソルタイプに依存しますが、その中では 3 が最小となるでしょうね。
静的の場合、取りだされたデータ総量に応じたメモリを消費します。
キーセットの場合は、取りだされたキー項目のサイズに依存します。
動的の場合はプロバイダ依存なので、測定しないとわかりません。
> 1件データをaddnewで追加したいです
データの取得が不要で、ただ単に AddNew したいだけであれば、
そのプロバイダが DBPROP_APPENDONLY モードをサポートしているかを
確認してみてください。(3)以上の処理効率を得られる可能性があります。
たとえば Microsoft.JET.OLEDB.4.0 であれば、下記のように書けます。
Set rs.ActiveConnection = cn
rs.CursorLocation = adUseServer
rs.Properties("Append-Only Rowset").Value = True
rs.Open tableName, Options:=adCmdTableDirect
rs.AddNew "id", x
複数の列を登録せねばならない場合は、配列で指定します。
rs.AddNew Array("id", "mail"), Array(x, Text1.Text)