【发布时间】:2014-01-20 16:54:38
【问题描述】:
我有一个简单的 sqlite 数据库,只有一个表和 7-8 个字符串字段,大约 2.000.000 条记录。磁盘上的数据库文件大约是 450-500mb...
当我在我的 c# 应用程序中打开 db 文件并执行简单的“select * from tbl”查询时,计算机内存使用量变为 3gb。
这是我用来从数据库中选择数据的代码:
DataSet ds = new DataSet();
dataGridView1.DataSource = null;
string s = Cstr();
try
{
SQLiteConnection conn = new SQLiteConnection(s);
SQLiteCommand command = new SQLiteCommand(conn);
command.CommandText = "select * from log;";
conn.Open();
command.ExecuteReader();
var da = new SQLiteDataAdapter(command.CommandText, conn);
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
conn.Close();
GC.Collect();
}
catch (Exception)
{
}
我用 mysql5 db 尝试过同样的事情,对于那个大小的数据库,内存使用是正常的。 编辑: 我尝试用 Delphi XE5 加载相同的 sqlite 数据库,它只使用了 ~600mb 的内存。
有什么办法可以避免吗?
【问题讨论】: