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 :

"create table x select" scanne toute ma table


Sujet :

Requêtes MySQL

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut "create table x select" scanne toute ma table
    bonjour à tous,

    je vous remonte un problème étrange rencontré sous MySQL 5.0.27 sous debian.
    La table TABLE contient 30 millions de lignes, en myIsam, et contient 3 champs: (date_sample, id_truc, valeur)

    Lorsque je lance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select id_truc, max(date_sample) as date_sample, max(date_sample) as date_vol
    from TABLE
    group by id_truc;
    C'est instantané, ayant un index respectivement sur id_truc et date_sample. L'explain le confirme.

    Lorsque que je veux créer une table (tempo ou pas) à partir de ce select, mySQL scanne alors toute la table et ça devient très lent (je peux le voir par le log des requêtes lentes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create temporary table max_truc
    select id_truc, max(date_sample) as date_sample, max(date_sample) as date_vol
    from TABLE
    group by id_truc;
    Je voudrais savoir si qqn a déjà rencontré ce comportement et comment contourner ou corriger le pb. On dirait que le plan d'exécution n'est plus le même.

    Merci pour votre aide
    Emmanuel T.

  2. #2
    Membre confirmé Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Points : 570
    Points
    570
    Par défaut
    Pour essayer d'améliorer le temps de traitement, commence par créer ta table et ensuite d'insérer les données.
    "Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    C'est exactement le même temps d'exec et le même comportement (scan de table) avec un create table puis insert/select.

    merci
    Emmanuel T.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 056
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 056
    Points : 1 216
    Points
    1 216
    Par défaut
    un passage en 5.0.45 a permis un changement de comportement et l'optimisation se passe bien mieux.
    Emmanuel T.

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

Discussions similaires

  1. CREATE TABLE .... AS SELECT
    Par blids dans le forum SQL
    Réponses: 5
    Dernier message: 13/10/2016, 14h00
  2. Réponses: 3
    Dernier message: 22/05/2015, 20h39
  3. Surveiller 'CREATE TABLE AS SELECT'
    Par mjag dans le forum Administration
    Réponses: 4
    Dernier message: 26/12/2006, 11h42
  4. select toutes les tables d'une base
    Par rexxys dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/11/2006, 16h10
  5. [VBnet][Access] Requete imbriquee "insert + select"
    Par Fab62_ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/03/2006, 13h58

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