IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Amélioration rapidité requête


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut Amélioration rapidité requête
    Bonjour,

    Voici une requête très simple qui verifie l'unicité de l'adresse mail dans ma table. les adresses sont cryptées et cela met plus de 15 secondes sur 11 000 enregistrement pour me retourner un résultat.

    Les emails sont stockées dans un champ de type Text Unique avec index.

    Voici la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT id_membre
    FROM inscrit
    WHERE pgp_sym_decrypt(dearmor(membre_email),$2) = $1;
    $2 = clé de cryptage
    $1 = email à vérifier

    Voici l'analyse de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Seq Scan on inscrit  (cost=0.00..2683.30 rows=56 width=8) (actual time=1809.930..14227.619 rows=1 loops=1)
    Comment améliorer la rapidité selon vous car c'est le cryptage qui doit plomber la rapidité ?

    merci !

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Décidément tes problèmes de perf ça n'arrête pas
    Ta clé de cryptage est la même pour tous tes enreg ? Si oui tu peux essayer de créer un index de fonction sur pgp_sym_decrypt(dearmor(membre_email),ta_clé)
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut
    Salut scheu !

    Ben oui j'essaie d'optimiser tout cela !

    Oui la clé de cryptage est la même pour tous !

    On crée comment un index de fonction ????

  4. #4
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Par défaut
    Moi, j'aurai plutôt fait le contraire: chiffrer la clause de comparaison et la comparer à l'ensemble des valeurs dans la base plutot de de déchiffrer l'ensemble des valeurs de la base(ce qui sera forcement assez couteux) pour les comparer à une valeur non chiffrée

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut
    J'ai fait le temps d'exécution est le même...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 677
    Par défaut
    J'ai créé un index sur la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE INDEX unicite_email ON inscrit  (pgp_sym_decrypt(dearmor(inscrit_email),'maclé'));
    C'est parfait les temps de réponse sont super !!! merci scheu !

  7. #7
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 43
    Par défaut
    Citation Envoyé par viny Voir le message
    J'ai fait le temps d'exécution est le même...
    Comment l'as-tu fait ? en faisant un appel à la fonction de chiffrement dans la clause where ? Alors en effet, le résultat est le même car le chiffrement est refait pour chaque enregistrement sauf si ta fonction de chiffrement est déclarée comme "Stable strict"
    essaie en calculant d'abord la valeur chiffrée et en la passant dans ta requète en dur ensuite, avec un index sur les valeurs chiffrées. Si cela améliore tes perf, tu pouras passer par une petite procedure

    Créer un index avec la fonction et la clé, revient à indexer les valeurs déchiffrée, ce qui n'est probablement pas la meilleure idée en terme de sécuritée. Enfin si tu les chiffres j'imagine que tu as une bonne raison de le faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Améliorer rapidité requête mysql
    Par Pitof dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/06/2011, 10h36
  2. Amélioration perf requête
    Par toulouseadr dans le forum Hibernate
    Réponses: 2
    Dernier message: 08/07/2008, 08h37
  3. Amélioration de requête statistique
    Par Nuwanda dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/04/2008, 17h59
  4. [MySQL] Amélioration performance requête
    Par lodan dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 15/01/2007, 09h06
  5. améliorer une requête
    Par papilou86 dans le forum Access
    Réponses: 5
    Dernier message: 22/05/2006, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo