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

Langage SQL Discussion :

Qu'est ce qui est le plus performant ?


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 49
    Points
    49
    Par défaut Qu'est ce qui est le plus performant ?
    Bonjour à tous. J'ai une petite question (cela concerne Mysql)

    J'ai une table "Email vérifié" qui comprend entre 10 000 et 50 000 emails. Chaque jour, un script doit être lancé pour récupérer des emails de l'extérieur, et les insérer dans cette table. Le soucis c'est que dans ces e-mails importés, il y en a déjà que l'on a enregistré dans notre base de données
    Par conséquent, en terme de performance je voulais vous demander :
    1) Serais-t-il plus performant de vider toute la table "Email vérifié" et de la re-remplir.

    2) Ou alors pour chaque e-mail récupéré, faire un test pour savoir si elle existe dans la base.


    Quel est la solution la plus performante et rapide, en théorie bien sur. Merci d'avance de vos réponses en tout cas

  2. #2
    Membre éprouvé
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 808
    Points : 912
    Points
    912
    Par défaut
    Bonjour,
    Pourquoi ne pas simplement supprimer le mail lu sur le serveur. Parce que sinon cela va rapidement saturer le traitement côté mysql.
    Faire le traitement pour des milliers articles va rapidement saturer ton script.
    Comment va tu savoir que le mail existe déjà (option 2)?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 71
    Points : 49
    Points
    49
    Par défaut
    Je pense que tu as mal compris le sujet, c'est surement du à une mauvaise explication de ma part. Je m'explique un peu mieux :

    J'ai une base de données, qui va devoir récupérer des mails à partir d'un service externe. Donc on a à ça :

    Base de donnée < ===== Email provenant de l'extérieur.

    Par exemple pour un jour j, j'importe une liste de 5 mails de l'extérieur.
    Le lendemain, je dois importer la même liste, qui pourrait avoir les 5 mails précédant + de nouveaux.

    Alors là j'ai 2 solutions :
    - Soit je vide toute ma table, et je réimporte toute la liste
    - Soit pour chaque email de la liste, je teste si ce dernier existe déjà dans ma base de donnée, si c'est le cas rien ne sert de l'importer.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il vaut mieux, dans ce cas, vider et réimporter, à condition que le service resserve l'intégralité de ce qui a déjà été téléchargé.

    Mais d'une manière générale, je préfère importer les données externes dans une table tampon et avoir une procédure qui répartit les données importées dans les bonnes tables de la BDD structurée. Dès lors, les données déjà importées sont protégées d'un nouvel import car il est facile dans la procédure de n'insérer dans la BDD normalisée que les nouvelles données.
    Et du coup aucun problème pour vider la table tampon une fois l'insertion en BDD effectuée par la procédure.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    L'option 2 ne peut pas être envisageable telle que présentée.
    L'option 2 devrait être MERGE les données (ou dans le cas de mysql ON DUPLICATE KEY mais c'est moins flexible).

    Mais effectivement si un TRUNCATE est possible car l'appli n'est pas utilisée, le fichier contient tous les mails, les clés étrangères peuvent être désactivées alors effectivement TRUNCATE + reload de toutes les données est une option très fréquemment utilisée.

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/06/2007, 13h40
  2. Réponses: 9
    Dernier message: 15/05/2007, 18h01
  3. [Listeners] Qu'est ce qui est le plus propre?
    Par michaeljeru dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 01/05/2007, 12h21
  4. [C#][Débutant] Qu est ce qui serait le plus judiceux pour faire ca
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/05/2006, 18h57
  5. [Ordinateur] Qu'est ce qui ne va plus ?
    Par portu dans le forum Ordinateurs
    Réponses: 16
    Dernier message: 05/03/2006, 00h12

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