Mysql
 sql >> Base de données >  >> RDS >> Mysql

JOINS vs instructions while

Si les index sont correctement utilisés, ils sont presque toujours plus efficaces pour utiliser un JOIN. L'accent est ajouté car la meilleure efficacité n'est pas toujours égale à la meilleure performance.

Il n'y a pas vraiment de réponse unique, cependant; vous devez analyser une requête en utilisant EXPLAIN pour s'assurer que les index sont bien utilisés, qu'il n'y a pas d'utilisation inutile de table temporaire, etc. Dans certains cas , les conditions conspirent pour créer une requête qui ne peut tout simplement pas utiliser des index. Dans ces cas, il pourrait soyez plus rapide pour séparer les requêtes en morceaux de la manière que vous avez indiquée.

Si je rencontrais un tel code dans un projet existant, je le remettrais en question :vérifiez la requête, réfléchissez à différentes manières d'effectuer la requête, assurez-vous que ces éléments ont été pris en compte, construisez un dossier scientifique, étayé par des faits, pour ou contre la pratique. . Assurez-vous que les développeurs d'origine ont fait preuve de diligence raisonnable, car ne pas utiliser un JOIN superficiellement indique une mauvaise conception de la base de données ou des requêtes. En fin de compte, cependant, les résultats sont éloquents et si toutes les optimisations et corrections entraînent toujours une jointure plus lente que celle fournie par l'utilisation de fragments de requête, la solution la plus rapide prévaut. Benchmark et agir sur les résultats du benchmark ; il n'y a aucun cas dans la conception de logiciels où vous devriez échanger des performances médiocres contre l'adhésion à des règles arbitraires sur ce que vous devriez ou ne devriez pas faire. La méthode la plus performante est la meilleure méthode.