在SQL Server CE Winforms中查找数据的最快方法是什么?
本文关键字:方法 是什么 数据 查找 Server SQL CE Winforms | 更新日期: 2023-09-27 18:16:48
我把我的软件数据库从MS Access改为SQL Server CE。我不能使用其他数据库,因为我没有(Admin)权限在客户端安装。
我已经根据需要索引了几列。我很困惑在SQL Server CE中找到数据,因为有几种方法可以这样做。我可以使用SqlCeResultSet
, SqlCeDataReader
等方法来查找数据。
由于SqlCeResultSet
提供了几个ResultSetOptions
,所以使用哪一个以及何时使用。我有ID是表Users
中的主键,通常使用3种类型的查询:
使用where条件选择多个列:
SELECT Id, email, mobile
FROM Users
WHERE Users.Tmpid = 3
AND connected = 1;
Select几个Fields with primary key:
SELECT email, mobile, address
FROM Users
WHERE Id = 10;
No where condition:
SELECT Max(TmpId)
FROM Users;
我搞不清哪个是在什么时候用的。哪一个提供最快的方式来查找数据在SQL Server CE?
您应该先使用索引,然后使用TableDirect API,如下面的示例代码所示,在我的非正式测量中,它大约快了30%。
public CacheElement FindElementByKey(Guid key)
{
using (var command = _connection.CreateCommand())
{
command.CommandType = CommandType.TableDirect;
command.CommandText = "CacheElement";
command.IndexName = "PK_CacheElement";
using (var reader = command.ExecuteReader())
{
reader.Seek(DbSeekOptions.FirstEqual, key);
if (reader.Read())
{
var element = new CacheElement();
element.Key = key;
element.Tag = reader.GetValue(1) == DBNull.Value ? null : reader.GetString(1);
element.Value = (byte[])reader.GetValue(2);
element.CreatedAt = reader.GetDateTime(3);
element.ExpirationAt = reader.GetDateTime(4);
return element;
}
}
return null;
}
}
查看我的博客文章的示例和更多信息:http://erikej.blogspot.dk/2015/07/sql-server-compact-adonet-data-access.html