PostgreSQL10, Pgcrypto, HMAC, как пересчитать данные?

Я должен сделать куки с хешем, созданным с помощью функции HMAC для автоматической аутентификации.

Я искал в интернете, как использовать функцию HMAC, и в соответствии с тем, что я нашел, они делают это так:

SELECT * 
FROM   APP.USER
WHERE  ENCODE( HMAC( USER_ID::TEXT, 'MY_KEY', 'SHA256'), 'HEX) = COOKIE_HASH;

Проблема в том, что Postgres выполняет последовательное сканирование. O (n)

Я хочу знать, есть ли способ получить user_id с ключом, чтобы сделать сканирование индекса.

Спасибо за ваше время (простите мой английский).

0 ответов

Потому что ваш sql пытается запустить функцию для каждой строки. Вы можете использовать функциональный индекс или сохранить хешированное и закодированное значение в другом столбце.

Функциональный индекс:

CREATE INDEX fxix_user_id ON APP.USER(ENCODE(HMAC( USER_ID::TEXT, 'MY_KEY', 'SHA256'), 'HEX));
Другие вопросы по тегам