【问题标题】:Indexes on BLOBs that contain encrypted data包含加密数据的 BLOB 上的索引
【发布时间】:2013-02-16 18:22:01
【问题描述】:

我在一个表中有一堆 BLOB 类型的列。这些列中包含的数据使用 MySQL 的 AES_ENCRYPT() 函数进行加密。其中一些字段正在我正在构建的应用程序的搜索部分中使用。在经常访问的列上放置索引是否值得?我不确定它们是 BLOB 的事实或数据本身已加密的事实是否会使索引无用。

编辑:以下是有关我的具体案例的更多详细信息。有一个大约 10 列左右的表,每个 BLOB。插入此表的每条记录都将使用 AES_ENCRYPT() 函数进行加密。在我的应用程序的搜索部分,用户将能够输入他们的查询。我接受他们的查询并像 SELECT AES_DECRYPT(fname MYSTATICKEY) AS fname FROM some_table 这样解密它,以便我可以使用 LIKE 子句执行搜索。我很好奇的是索引是否会索引加密数据而不是解密返回的实际数据。我猜如果索引仅应用于加密的二进制字符串,那么它根本不会帮助性能。我错了吗?

【问题讨论】:

  • 您只会将它们索引到一定长度(在 SQL 中指定)。并且比较必须在这个长度内。海事组织
  • 你能解释一下你的用例吗?我有一些想法,但这取决于您的搜索方式。
  • 当然,我已经添加了更多细节

标签: mysql encryption indexing blob aes


【解决方案1】:

注意以下几点:

因此,IMO,您的猜测是正确的 - 索引无助于您的搜索性能。

请注意,“为加密列编制索引”是一个相当普遍的问题 - 网上关于它的文章很少。例如(虽然这已经很老了,而且对于 MS SQL 它确实涵盖了一些想法):http://blogs.msdn.com/b/raulga/archive/2006/03/11/549754.aspx

另见:What's the best way to store and yet still index encrypted customer data?(我在上面找到的同一篇文章的最佳答案链接)

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-20
    • 2015-05-14
    • 1970-01-01
    相关资源
    最近更新 更多