C# 由于数据加密而添加到列表性能

C# 由于数据加密而添加到列表性能,c#,sql,list,C#,Sql,List,我已经创建了一个系统,其中许多敏感数据必须在数据库中加密。我面临的问题是使用过滤器查询数据,如名字、姓氏等。由于这些值在数据库中被加密,目前我唯一的解决方案是返回所有数据并添加到列表中,然后查询列表。这会导致一些性能问题 我已经厌倦了使用字典、HashSet和并行方法来提高速度,但是运气不好 下面的函数是一个IQueryable方法,它从数据库中返回800条记录。此SQL查询大约在0.02秒内运行 var data = dc.GetSensativeData(); 然后我创建一个列表的实例 v

我已经创建了一个系统,其中许多敏感数据必须在数据库中加密。我面临的问题是使用过滤器查询数据,如名字、姓氏等。由于这些值在数据库中被加密,目前我唯一的解决方案是返回所有数据并添加到列表中,然后查询列表。这会导致一些性能问题

我已经厌倦了使用字典、HashSet和并行方法来提高速度,但是运气不好

下面的函数是一个IQueryable方法,它从数据库中返回800条记录。此SQL查询大约在0.02秒内运行

var data = dc.GetSensativeData();
然后我创建一个列表的实例

var listItems = new List<T>();
800条记录大约需要15秒来呈现太长的页面


谢谢

如果您想查询数据库中的加密数据,请查看
同态加密
(尽管我怀疑这是否真的能解决您的问题)。另一种常见的方法是让服务器在内存中保持数据未加密,并且仅在写入磁盘时对其进行加密。使用加密,你必须在某处付出解密的代价。现在这就在你的客户机上。这也取决于你使用哪种加密方法。我建议对foreach循环中的每条语句使用秒表(在System.Diagnostics中),以准确查看是什么在减慢过程。假设您使用相同的密钥加密所有内容,并且所有内容都是独立加密的,并且每个值的加密都会产生唯一的值。。。还有。。。。然后,您可以对查询项进行加密,并将加密的结果与存储的值进行比较。然而,正确的答案是@germ所说的——让数据库引擎来处理加密。c#加密和解密方法是减慢它的原因。列表中的2项需要解密。如果我删除这些,查询将从15秒缩短到0.06秒。有人能推荐一些关于快速c#加密和解密方法的文章吗?如果你想在数据库中查询加密数据,请查看
同态加密
(尽管我怀疑这是否真的能解决你的问题)。另一种常见的方法是让服务器在内存中保持数据未加密,并且仅在写入磁盘时对其进行加密。使用加密,你必须在某处付出解密的代价。现在这就在你的客户机上。这也取决于你使用哪种加密方法。我建议对foreach循环中的每条语句使用秒表(在System.Diagnostics中),以准确查看是什么在减慢过程。假设您使用相同的密钥加密所有内容,并且所有内容都是独立加密的,并且每个值的加密都会产生唯一的值。。。还有。。。。然后,您可以对查询项进行加密,并将加密的结果与存储的值进行比较。然而,正确的答案是@germ所说的——让数据库引擎来处理加密。c#加密和解密方法是减慢它的原因。列表中的2项需要解密。如果我删除这些,查询将从15秒缩短到0.06秒。有人能推荐一些关于快速c#加密和解密方法的文章吗?
foreach (var item in data)
{
    listItems.Add(item);
}