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

  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.

  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

  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.

+ 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, 15h00
  2. Réponses: 3
    Dernier message: 22/05/2015, 21h39
  3. Surveiller 'CREATE TABLE AS SELECT'
    Par mjag dans le forum Administration
    Réponses: 4
    Dernier message: 26/12/2006, 12h42
  4. select toutes les tables d'une base
    Par rexxys dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/11/2006, 17h10
  5. [VBnet][Access] Requete imbriquee "insert + select"
    Par Fab62_ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/03/2006, 14h58

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