Chargement de données SQL

Une question d'optimisation

a marqué ce sujet comme résolu.

Bonsoir,

J’avais une question sur l’optimisation des requêtes SQL que j’ai dans mon code.
Pour exemple, prenons deux classes Projet et Fichier.

Chaque classe correspond à une table dans la base SQL. Et la classe Projet peut contenir plusieurs Fichier.

Maintenant, lorsque je charge ma classe projet, faut-il que je fasse une jointure pour charger les fichiers ? Sachant que je n’aurai pas toujours besoin des fichiers.

Dans la question est, faut-il mieux faire une requête qui charge le tout à chaque fois (Avec des jointures) ou faire plusieurs requête quand cela s’avère nécessaire ?

En vous remerciant.

+0 -0

Ni l’un ni l’autre. Faut faire un cas par cas. Je te donne quelques exemples :

  1. Liste des projets -> * from projects
  2. Liste des fichiers d’un projet -> * from fichiers where project_id = x
  3. Liste des projets ET leurs fichiers -> * from projects as p join fichiers as f on f.project_id = p.id where project_id = x

Dans tous les cas, évite de charger ligne par ligne avec une requête par ligne.

+2 -0

Pour compléter la réponse de @victor, pareil pour les requêtes à opérations cartésiennes, ça:

1
* from projects as p, fichiers as f where f.project_id = p.id

Tu va avoir un total de size(projects) * size(f) là où tu n’aurai que peu de résultats. Bref, la 3e méthode est la seule recommandée lorsque tu récupère et rejoins des valeurs de deux tables différentes.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte