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 :

Generation du plan mauvais à travers une vue


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Generation du plan mauvais à travers une vue
    Bonjour

    Je vous soumets ce petit problem.

    J'ai deux tables: recent_etats et ack_etats.
    recent_etats est vide pour ce test et ack_etats contient 100k lignes.

    J'ai une vue qui englobe c'est deux tables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create view etats as
    select  * from recent_etats
    union all
    select * from ack_etats;
    je genere le premier plan:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mysql> explain select distinct(object_type) from ack_etats;
    +----+-------------+-----------+-------+---------------+--------------+---------+------+------+--------------------------+
    | id | select_type | table     | type  | possible_keys | key          | key_len | ref  | rows | Extra                    |
    +----+-------------+-----------+-------+---------------+--------------+---------+------+------+--------------------------+
    |  1 | SIMPLE      | ack_etats | range | NULL          | i2_ack_etats | 130     | NULL |    5 | Using index for group-by |
    +----+-------------+-----------+-------+---------------+--------------+---------+------+------+--------------------------+
    Normal il utilise l'index sur object_type.

    Maintenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql> explain select distinct(object_type) from etats;
    +----+--------------+--------------+------+---------------+------+---------+------+--------+-----------------+
    | id | select_type  | table        | type | possible_keys | key  | key_len | ref  | rows   | Extra           |
    +----+--------------+--------------+------+---------------+------+---------+------+--------+-----------------+
    |  1 | PRIMARY      | <derived2>   | ALL  | NULL          | NULL | NULL    | NULL | 100000 | Using temporary |
    |  2 | DERIVED      | recent_etats | ALL  | NULL          | NULL | NULL    | NULL |      1 |                 |
    |  3 | UNION        | ack_etats    | ALL  | NULL          | NULL | NULL    | NULL | 102199 |                 |
    | NULL | UNION RESULT | <union2,3>   | ALL  | NULL          | NULL | NULL    | NULL |   NULL |                 |                                        
    +----+--------------+--------------+------+---------------+------+---------+------+--------+-----------------+
    Bizarre il fait un full scan maitenant sur la table ack_etats.

    Pourquoi il n'utilise pas l'index avec l'utilisation de la vue ?

    Maintenant si je mets 6 millions de lignes dans ack_etats la commande explain ne repond plus (j'ai attendus 15min avant de stop) !!!! probleme mysql ne semble plus capable de genere le plan ?

    j'aimerais votre avis

    Merci d'avance

    Sébastien

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    La gestion des index dans les vues de MySQL n'est pas encore au point...
    Si l'anglais ne te fait pas peur, voici le lien vers un article qui présente ce problème.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup

Discussions similaires

  1. generation d'une vue (ou d'un) rendu a partir d'un formulaire
    Par Torx26 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 21/04/2012, 16h17
  2. Probleme de generation de resultat a travers une servlet
    Par marouene_ dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 04/04/2011, 11h10
  3. Modifier une ligne au travers d'une vue
    Par DranDane dans le forum Oracle
    Réponses: 3
    Dernier message: 12/10/2009, 11h33
  4. Réponses: 4
    Dernier message: 27/11/2006, 18h06
  5. droits à travers une vue
    Par aline dans le forum Oracle
    Réponses: 5
    Dernier message: 05/01/2005, 18h14

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