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

Optimisations SGBD Discussion :

Grosse table avec des jointure sur cette même table vaut mieux que plein de petites ?


Sujet :

Optimisations SGBD

  1. #1
    Membre du Club
    Profil pro
    dbadmin et dev web magento
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dbadmin et dev web magento

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 56
    Points
    56
    Par défaut Grosse table avec des jointure sur cette même table vaut mieux que plein de petites ?
    Bonjour,

    Je suis plutot novice en se qui concerne les optimisations mysql et une question me trote :
    est-ce qu'une grosse table avec des jointure sur cette même table vaut mieux que plein de petites tables avec des jointures entre elle ???

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 089
    Points : 31 345
    Points
    31 345
    Billets dans le blog
    16
    Par défaut
    Même si elle représente cent millions de lignes, si la grosse table est correctement indexée, si elle n'est pas désorganisée, si les statistiques du catalogue relationnel sont à jour, si le facteur de filtrage est bon (peu de pages index et données accédées), alors une requête pourra coûter, disons, entre 20 et cent millisecondes.

    Inversement, si une table est cent fois moins volumineuse et que les conditions précédentes ne sont pas réunies, alors la même requête pourra durer une heure et au-delà.

    Cela fait beaucoup de "si", c'est pourquoi le mieux est que vous consultiez votre DBA pour lui demander de vous apprendre à prototyper vos requêtes.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Membre du Club
    Profil pro
    dbadmin et dev web magento
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dbadmin et dev web magento

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 56
    Points
    56
    Par défaut
    merci de la précision.

    En fait je compte tenter d'utiliser la méthode d'arborescence décrite ici afin de n'utiliser qu'une seule table pour organiser toutes les ressources peu encombrante (facile à indexer) plutôt que de faire X jointures à n'en plus finir.

    Avec cette méthode on pourrait organiser les données un peu sous la forme du XML et récupérer toutes les données necessaires en une seule requète. Il y aura des sous-requetes mais un seule table en lecture, ça réduirait donc le temps d'accès disque. En fait ce serait un peu comme une base de donnée objet.

    Mais je suis pas expert la dedans et j'ai jamais travaillé sur des grosses tables donc est-ce qu'en terme de performance ce serait faisable ou bien je plane complètement ?

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 089
    Points : 31 345
    Points
    31 345
    Billets dans le blog
    16
    Par défaut
    Il y aura des sous-requetes mais un seule table en lecture, ça réduirait donc le temps d'accès disque
    Ceci est parfaitement subjectif. Accéder à plusieurs petites tables peut paradoxalement représenter moins d'accès disque qu'en accédant à une seule table obèse. Dans tous les cas, seul un prototypage de performance permet de conclure.

    En tout état de cause, sans MCD et sans règles de gestion, il est impossible de poursuivre cette discussion qui relève du café du commerce.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. Jointure sur un même table avec utilisation MIN/MAX
    Par Chips_ dans le forum Requêtes
    Réponses: 4
    Dernier message: 13/12/2012, 14h29
  2. [MySQL] SELECT * avec jointure sur une même table
    Par Oprichnik dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/03/2011, 13h17
  3. Requete avec jointure sur la même table
    Par CaptainChoc dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/04/2009, 12h30
  4. [MySQL] requête avec jointure sur la même table
    Par gwena54 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/05/2007, 11h22

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