Maison >base de données >tutoriel mysql >JOIN ou WHERE : lequel est le plus rapide pour les requêtes de base de données avec des relations de clé étrangère ?

JOIN ou WHERE : lequel est le plus rapide pour les requêtes de base de données avec des relations de clé étrangère ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-31 13:36:11934parcourir

JOIN vs. WHERE: Which is Faster for Database Queries with Foreign Key Relationships?

JOIN vs. WHERE : lequel est le plus rapide pour les requêtes de base de données ?

Dans le monde des requêtes de bases de données, la vitesse est cruciale. Lorsque vous avez deux tables liées par une clé étrangère, comme Document et DocumentStats, vous pouvez vous demander si l'utilisation d'une clause JOIN ou WHERE est plus rapide pour récupérer des données.

Question :

Considérez la requête suivante :

SELECT *
FROM Document, DocumentStats
WHERE DocumentStats.Id = Document.Id
  AND DocumentStats.NbViews > 500

Une requête alternative utilisant un INNER JOIN est :

SELECT *
FROM Document
INNER JOIN DocumentStats ON Document.Id = DocumentStats.Id
WHERE DocumentStats.NbViews > 500

Quelle requête s'exécute plus rapidement, ou sont-elles équivalentes ?

Réponse :

Théoriquement, les deux requêtes devraient s'exécuter aussi rapidement que l'optimiseur de requêtes optimise le plan d'exécution. Cependant, en pratique, le moteur de base de données peut produire de meilleurs plans d'exécution pour l'une des requêtes, notamment pour les opérations plus complexes.

En bref, il est préférable de tester les deux requêtes sur votre moteur de base de données pour déterminer laquelle est la plus performante. . Cependant, vous pouvez généralement vous attendre à ce qu'ils aient des vitesses comparables pour des requêtes simples.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn