約 300,000++ 行を含む CSV ファイルから読み取る VB Web アプリケーションがあります。アプリケーションは行ごとに読み取り、行ごとに、約 100,000++ レコードを含む SQL Server データベース内のテーブルをクエリし、クエリの結果に基づいて、アプリケーションは別のことを行います。sqlservr.exe は、4 GB の開発マシンでメモリ消費量を最大にします。
そこで、ループ クエリの観点から SQL Server のパフォーマンスをテストするための簡単なアプリケーションを作成しました。
Dim Connection As New SqlConnection(ConfigurationManager.ConnectionStrings("SiteSqlServer").ConnectionString)
Dim Command As New SqlCommand("", Connection)
Connection.Open()
For i As Integer = 0 To 20000
Command.CommandText = "SELECT CustomerID FROM Customer WHERE CustomerID = " & i
Command.ExecuteScalar()
Next
Connection.Close()
このコードが実行されるたびに、sqlservr.exe はさらに 100MB++ のメモリを占有し、コードの実行が終了した後でもメモリを解放しません。
これは正常ですか?この影響を軽減する方法はありますか?