【发布时间】:2011-10-09 07:18:37
【问题描述】:
我有一个 sql 数据库,它需要存储一组必须快速查询的人口统计个人数据。
要求数据必须加密,因为它是个人信息,但也必须进行搜索以允许记录匹配。
我的问题是我应该将这些字段定义为哪些数据类型,如果它们是 varchar 或 varbinary,它们将存储加密数据?
我的想法是 varbinary 将减少代码中将加密数据转换为 base64 字符串的不必要开销,但是在 sql 中查询此数据会比查询 varchar 字段慢很多。我不确定 varbinary 字段对非聚集索引的表现如何?
[编辑] 我的问题实际上是针对查询性能的。比较字段是否相等时,存储 varbinary 数据会影响查询性能吗?
【问题讨论】:
-
我明白了。这不是问题,因为只需要精确的比较。查询性能是我主要关心的问题。我需要能够尽快匹配这些字段上的记录。
-
许多 RDBMS 允许由数据库对各个列进行加密 - 免去了您手动加密数据的麻烦。检查您的文档以查看您的系统是否支持此功能,以及如何查询存储此数据的数据。
标签: c# sql encryption query-optimization