带解密的多个Where子句

射线

这样的查询是否会基本上解密每个where条件的用户名或仅解密一次并将其应用于每个条件?

SELECT * 
FROM TableA 
WHERE (
    CONCAT_WS(
        ' ', 
        AES_DECRYPT(TableA.FirstName, "fnkey"), 
        AES_DECRYPT(TableA.LastName, "lnkey")
    ) LIKE '%RAY%' 
    OR 
    CONCAT_WS(
        ' ', 
        AES_DECRYPT(TableA.LastName, "lnkey"), 
        AES_DECRYPT(TableA.FirstName, "fnkey")
    ) LIKE '%RAY%'
);
洛伦兹·迈耶(Lorenz Meyer)

我无法确定该函数是否为每行或更多进行一次评估。它取决于查询优化器。您可以通过基准来建立它。

无论如何,这个查询是非常低效的。它将进行全表扫描并为每一行计算此功能。您不能在此处使用索引。您不会在多于两行的表上实现此查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章