Bonjour,

J'aimerais avoir quelques précisions sur les champs BLOB, les index et la recherche sur un champ BLOB de noms cryptés via la fonction AES_ENCRYPT
Pour info, voilà la requête d'insertion dans la table. Le champ 'nom' peut contenir 50 caractères max avant cryptage.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
INSERT INTO sys_user 
(iduser, ID) 
VALUES 
('$iduser', AES_ENCRYPT('$nom','$mdp'))
Le problème. Cette table va contenir en 20 et 30 millions d'enregistrements.
Comment optimiser la recherche d'un nom ?

Vaut-il mieux comparer le nom non crypté avec la valeur préalablement décryptée dans la base (ID) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT AES_DECRYPT(ID,'$mdp') AS nom, 
FROM sys_user 
WHERE AES_DECRYPT(ID,'$mdp') LIKE '$nom'
ou crypter le nom et le comparé avec la valeur cryptée dans la base :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT AES_DECRYPT(ID,'$mdp') AS nom, 
FROM sys_user 
WHERE ID LIKE AES_ENCRYPT($nom,'$mdp')
Mais je ne suis pas sûr qu'une comparaison sur un portion seulement du nom soit alors possible dans ce cas (LIKE AES_ENCRYPT($nom,'$mdp')%) ?

Comment optimiser avec un index ?

Voilà, j'espère avoir été clair dans ma demande. Merci par avance de vos réponses.

PS : priorité à la vitesse de réponse bien entendu.