0

多数のレコードを一括挿入し、それぞれの最後に挿入された ID をすばやく取得するにはどうすればよいですか (classic asp/ado)?

私はこれを試しましたが、冗談である毎秒約3行でしか実行されません。

rs.Open "myTable", cn,adOpenKeyset, adLockOptimistic
do while NOT rs.EOF   
    rs.AddNew        
    rs("text") = myFunction() ' returns some text.
    rs.update
    lastid = rs("id") ' get new id and so something
loop

通常の adOpenForwardOnly (最後に挿入された ID を返さない) を使用すると、約 1000 倍速く実行されます。

上記の修正または代替ソリューションを提案できる人はいますか? テキストに対して処理関数を実行する必要があるため、SQLを直接... select()などに挿入するのではなく、コードでこれを行う必要があります。

4

1 に答える 1

0

これをすばやく行う方法は、ストアド プロシージャで一括挿入を使用することです。最終的にすべての ID を取得するためにクエリを実行することになりますが、これにより主なボトルネックであるデータベースへのトリップ数が減少します。

于 2012-07-27T14:17:21.230 に答える