在SQL Server

时间:2018-02-01 05:00:34

标签: sql sql-server encryption full-text-search

我深入研究了这个问题,并提出了一些解决方案,但在我选择之前我想要你的意见。

数据库:SQL Server 2014

我有三个varchar列FirstName, MiddleName, LastName

我已加密这3列,即这些列中的数据已加密。

我的应用程序具有操作员进行名称搜索的功能,以便当操作按name的顺序进入LastName FirstName MiddleName时,数据库需要搜索它。该名称不是这三列中的完全匹配 - 因此需要like查询。

由于这些列已加密,因此您无法直接在三列的串联上应用like运算符。您必须在连接时解密值,然后应用like运算符 - 考虑到数据库的大小(〜百万行),这将是太慢。您也无法索引加密列。

第二个选项是不加密LastName(因为任何人都不能仅通过姓氏来识别) - 在LastName上有索引,然后通过解密和执行like查询连接其他两列。我仍然认为这不起作用。

第三个选项是,在INSERTING新行之前,按照搜索(LastName + ' ' + FirstName + ' ' + MiddleName)的要求连接字符串,计算SOUNDEX,然后将SOUNDEX存储在一个单独的列中,然后可以对其进行索引和搜索。

有人可以对此有所了解,并建议您是否有其他不同的搜索方法?

感谢。

0 个答案:

没有答案