4 votes

La jointure de NotORM par rapport à des sélections multiples

J'ai regardé cette bibliothèque de base de données PHP appelée NotORM et en lisant sa documentation, j'ai lu leur position sur les jointures. L'argument était essentiellement la performance d'une seule requête SQL avec des jointures par rapport à l'utilisation de multiples requêtes SELECT et ensuite la mise en correspondance des résultats dans la couche d'abstraction de la base de données.

J'ai toujours su que les requêtes uniques seraient toujours meilleures que l'utilisation de multiples requêtes, donc l'idée de NotORM était nouvelle pour moi. Je ne suis pas sûr non plus car c'est uniquement dans NotORM que j'ai vu cette "fonctionnalité".

J'aimerais vous demander votre opinion à ce sujet.

Quelle requête est meilleure et plus rapide?

Ceci...

SELECT application.*, tag.*
    FROM application
    LEFT JOIN application_tag ON application.id = application_tag.application_id
    LEFT JOIN tag ON application_tag.tag_id = tag.id
    ORDER BY application.id

par rapport à...

SELECT * FROM application LIMIT 4;
SELECT * FROM application_tag WHERE application_id IN ('1', '2', '3', '4');
SELECT * FROM tag WHERE id IN ('21', '22', '23', '24');

Est-ce que cette deuxième méthode est vraiment pratique?

1voto

Kickstart Points 13541

Je m'attends à ce que la requête unique soit assez rapide. Cependant, cela dépendra de la communication entre php et MySQL. Lorsque j'ai essayé de le tester, il y a eu un surcoût notable juste pour effectuer une requête (aussi simple soit-elle).

Cependant, si la requête devient trop compliquée, vous vous retrouvez avec quelque chose de difficile à maintenir.

Un autre point à prendre en compte est si vous essayez d'utiliser des procédures personnalisées. Par exemple, j'avais besoin d'effectuer un traitement basé sur les distances de Levenshtein (c'est-à-dire à quel point les mots sont similaires). La fonction MySQL que j'ai trouvée pour cela était BEAUCOUP plus lente que de récupérer les données et de les traiter avec la fonction Levenshtein de PHP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X