【发布时间】:2015-08-26 04:32:52
【问题描述】:
我在 Windows 移动设备上有一个大的 .sdf 数据库文件,我需要查询它。该文件有 40,000 条记录。我正在尝试缩短执行查询所需的时间。目前大约是 8 秒,用户等待结果的时间很长。
起初我一直在使用DataSet,通过建立一个SqlCeConnection 并填充连接到数据集的适配器。还尝试与DataTable 类似,性能结果几乎相同。使用DataSet 或DataTable 在大约8 秒内完成查询。
我尝试的最后一件事是使用Reader()。它给了我更好的结果,但只有半秒(查询在大约 7.5 秒内完成)。
string lastName;
lastName = "";
string connectionString = @"Data Source='/Path/To/MyDatabase.sdf' Max Database Size = 128; Max Buffer Size = 1024;";
string strSql = "SELECT LastName FROM employee_list WHERE LastName = 'Johnson'";
using (SqlCeConnection mConnection = new SqlCeConnection(connectionString))
{
mConnection.Open();
using (SqlCeCommand mCommand = new SqlCeCommand(strSql, mConnection))
{
using (SqlCeDataReader reader = mCommand.ExecuteReader())
{
while (reader.Read())
{
lastName = (string)reader["LastName"];
}
}
mCommand.Dispose();
}
mConnection.Close();
mConnection.Dispose();
}
有什么想法可以让这更快吗?
【问题讨论】:
-
在姓氏上创建索引。
-
谢谢!做到了..第一次扫描时为 8 秒,下一次扫描时为 1 秒。如何预加载列索引以隐藏第一次扫描的延迟?
-
不确定。你可以在后台第一次启动时这样做,我想......
标签: dataset sql-server-ce windows-mobile windows-mobile-6.5 sqlcedatareader