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 :

Index jointures Tables


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut Index jointures Tables
    Bonjour,

    Voila mon souci.
    En sachant que fk_album_id et album_id ont été indexé dans leur table respectif...
    Lorsque l'exécute la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM album 
    INNER JOIN album_title ON fk_album_id = album_id
    La valeur Select_full_join s'incrémente pas

    SELECT_FULL_JOIN Le nombre de jointures qui n'ont pas utilisé d'index. Si cette valeur est supérieure à 0, vérifiez soigneusement les indexes de vos tables.

    Alors que lorsque j'ajoute un tri alors la le select_full_join s'incremente ... il y a donc un problème au niveau de mon indexation ou de ma jointure ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM album 
    INNER JOIN album_title ON fk_album_id = album_id 
    ORDER BY album.fk_time_id DESC
    Merci pour vos réponses.

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    A priori aucun problème. Un autre moyen de passer par l'index serait select album_id au lieu de select *.
    En gros oracle utilise l'index pour le tri car l'index l'aide à trier plus vite, mais, dans la jointure seule, un hash join des 2 tables semble assez cohérent, tout dépend de la sélectivité (et des stats).

    Par contre je ne sais pas ce qu'est SELECT_FULL_JOIN, mais:
    SELECT_FULL_JOIN Le nombre de jointures qui n'ont pas utilisé d'index. Si cette valeur est supérieure à 0, vérifiez soigneusement les indexes de vos tables.
    ne dit pas : si l'index n'est pas utilisé alors vous avez un problème.

    Il est bon d'indexer les FK pour plusieurs raisons, mais ça ne veut pas dire que l'index sera utilisé par toutes les requêtes, et c'est d'ailleurs tout le travail mené par oracle autour du CBO depuis plus de 10 ans.

    [EDIT] Désolé je pensais être sur le forum oracle , ceci dit mes remarques concernant la non utilisation de l'index reste valable pour la plupart des autres SGBD, toute référence à oracle exclue.
    As tu des problèmes de performances ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Je suis sur Mysql mais c'est du pareille au même ... Le problème n'est pas sur la jointure mais sur le faite que les élements de jointure ne sont pas indexé alors que justement elles le sont.

    Le paramètre SELECT_FULL_JOIN me remonte justement que lors de l'exécution de la requête les éléments de jointures ne sont pas indexés.

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

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    En fait c'est le contraire ? mysql passe par l'index sans le tri et pas par l'index avec le tri ?
    Peux tu nous montrer l'explain plan ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    CyberSécurité
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : CyberSécurité

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Voila la requête au complet ...
    Merci de ton aide



    Update :
    Je pense que mon problème peux venir sur le faite que j'ai plusieurs possible keys ??? qu'en penses tu ? et comment je pourrais y remédier ?

    2eme Update :
    Ou/Et que j'ai des NULL sur mes possible Keys alors que j'ai des bonnes jointures indexées en plus.

Discussions similaires

  1. Recreer les indexs de table dans SQL serveur 2000
    Par FilipeVV dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/03/2006, 15h30
  2. Réponses: 4
    Dernier message: 23/09/2005, 09h16
  3. Réponses: 15
    Dernier message: 16/08/2005, 14h43
  4. Indexer une table
    Par localhost dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 27/02/2005, 13h49
  5. [Sybase] Utilisation indexes sur table Proxy
    Par MashiMaro dans le forum Sybase
    Réponses: 2
    Dernier message: 20/02/2004, 10h20

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