我有一个 VB Web 应用程序,它从包含大约 300,000++ 行的 CSV 文件中读取。应用程序将逐行读取,并且对于每一行,它将查询包含大约 100,000++ 条记录的 sql server 数据库中的表,并根据查询结果,应用程序将执行其他操作。sqlservr.exe 在我的 4GB 开发机器中最大限度地消耗内存。
所以我创建了一个简单的应用程序来测试 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++ 内存,即使在代码执行完成后它也不会释放它。
这是正常的吗?有什么办法可以减轻这种影响吗?