我必须使用通过HMAC函数创建的散列来制作cookie,以进行自动身份验证。
我当时正在互联网上搜索HMAC功能的使用方法,根据我发现的内容,他们这样做是这样的:
SELECT *
FROM APP.USER
WHERE ENCODE( HMAC( USER_ID::TEXT, 'MY_KEY', 'SHA256'), 'HEX) = COOKIE_HASH;
问题在于postgres正在执行顺序扫描。 O(n)
我想知道是否有任何方法可以通过密钥检索user_id以便进行索引扫描。
hmac文档: https://www.postgresql.org/docs/current/static/pgcrypto.html
hmac参数:hmac(数据文本,键文本,类型文本)返回bytea
感谢您的时间(请原谅我的英语)。
答案 0 :(得分:1)
因为您的sql试图在每一行上运行函数。您可以使用函数索引,也可以将散列和编码后的值保存在另一列上。
功能索引:
REDIS_PREFIX=