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

Requêtes MySQL Discussion :

[SELECT sur 16 millions de lignes] délai très grand


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut [SELECT sur 16 millions de lignes] délai très grand
    Bonjour,
    J'ai une bd d'emails comportant 16 milions de lignes dans une table.
    quand je fais SELECT * FROM la_table il reste plusque 30 minutes à importer le resultat avant de l'afficher.
    est ce que j'ai dépassé les limites de mysql pour que ca soit trés lent ?
    Si oui que SGBD choisir pour ce genre de stockage ?
    merci


    [Titre édité par Maximilian]

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut
    Cela me parait dans la normalité des choses, surtout si le nb de colonnes est important et/ou si la taille des colonnes est conséquente.

    Ensuite, on peut aussi prendre en considération l'éventuelle désorganisation de la table, la puissance de la machine hébergeant la BD (et son taux de sollicitation=combien de clients et d'appli sur ce serveur)....

  3. #3
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    la base est hébergé localement sous fedora3 P4 3Ghz 1MoDDR, la table ne comporte que deux colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    id bigint auto_increment,
    email varchar(60) NOT NULL,
    voila, est ce que vous me conseillez de changer d'SGBD ?
    parce que la pour faire une requete de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) WHERE email like '%.fr'
    ca prends une 20ene de minutes

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut
    Ben ouais, encore un problème de conception.....(on construit un truc sans savoir à quoi il servira )


    Ce serait bien, par exemple, de rajouter 1 colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mail_Domaine VARCHAR (8) NOT NULL
    qui contiendrait le domaine (fr, com, fr.st, etc...) et surtout de l'indexer !

    Ainsi la requète s'appuierait sur cet index.

    Actuellement, le moteur relationnel doit scanner l'ensemble des "EMAIL" à la recherche du critère, autant dire que le relationnel ne sert à rien, tu aurais de meilleurs perf avec un fichier à plat !

  5. #5
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    Désolé d'insister mais je voudrais comprendre ce truc, l'indexation.
    Peut tu me donner un exemple comment je pourrais refaire ma structure en adoptant l'indexation ?
    merci beacoiups

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 925
    Points : 6 040
    Points
    6 040
    Par défaut
    .... et les tutoriaux....?


    ta table actuelle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    1*x@z.com
    2*h@z.fr
    3*y@w.com
    4*m@k.fr
    5*g@f.com
    pour savoir quels sont les %.FR, tu n'as d'autres solutions que de regarder 1 par 1 toutes les adresses, soit 5 opérations sur la table ci-dessus...
    Avec 1 colonne supplémentaire "mail_domaine":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    1*x@z.com*com
    2*h@z.fr*fr
    3*y@w.com*com
    4*m@k.fr*fr
    5*g@f.com*com
    L'index déclaré sur cette colonne va avoir cette organisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    com*1
    com*3
    com*5
    fr*2
    fr*4
    et le moteur relationnel qui va recevoir ta requète de count:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) FROM xxxxxx WHERE mail_domaine LIKE 'fr%'
    va utiliser cet index de sa propre initiative (c'est magique hein ?).

    Résultat : seulement 2 opérations de scan (gain 60%)

  7. #7
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    merci infiniment

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

Discussions similaires

  1. [MySQL] SELECT, INSERT et UPDATE sur un très grand nombre de lignes pour faire un classement
    Par sagat06 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/04/2014, 18h52
  2. [MySQL] Selection de plusieurs millions de lignes
    Par stomerfull dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/07/2012, 17h44
  3. Réponses: 10
    Dernier message: 09/03/2012, 11h04
  4. [SSIS]Doublons sur des millions de ligne
    Par MeriConsult dans le forum SSIS
    Réponses: 5
    Dernier message: 19/12/2008, 08h04
  5. selection sur une table en fonction de plusieurs ligne
    Par dimdidi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/12/2004, 08h42

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