Autres réponses déjà donner la réponse directe à votre question
Uniquement limitée par les ressources disponibles
Cependant, même si SQL Server avec succès compile un plan pour votre requête, cela ne signifie pas que vous devriez. Le plus vous avez rejoint le exponentiellement plus grande de l'espace de possibles plans de requête et vous pouvez très bien être très sous-optimale des plans.
Pour une requête avec 12 rejoint le nombre possible de commandes jointure est 28,158,588,057,600. En outre, chaque jointure peut être de trois algorithmes de hachage, les boucles imbriquées, de fusion)
Dans le livre "SQL server 2005 pratique de dépannage" Cesar Galindo-Legaria dit
Si vous vous joignez à plus de 20 tables, les chances sont l'optimiseur n'est pas
l'examen de l'ensemble de l'espace de recherche, mais s'appuyant davantage sur des heuristiques ....
nous avons vu les applications qui s'exécutent régulièrement des requêtes plus
100 tables. Alors qu'il est possible d'exécuter ces très grandes requêtes, vous
sont vraiment étirement du système dans ces cas et doit être très
attention, cette mesure
Selon les lignes Directrices de Microsoft, plus de cinq tables ne sont pas autorisés à se joindre à SQL Server. Est-il correct? Si pas, selon votre point de vue combien de tables sont autorisés à rejoindre dans SQL Server pour de meilleures performances. Max de 5 est une bonne recommandation. Pour left join sur une table, ce serait de 120 plans de requête possibles et pour d'autres d'un scénario jusqu'à 1680 plans. Vous aurez une bonne chance que SQL va faire un bon choix de ceux-ci. Dans certains cas, plus peut être justifiée en fonction de la requête et de la taille des tables (votre temps de besoin de code / gain de performance). Pour ce qui est "autorisé" dépend de votre politique, mais, techniquement, vous êtes "autorisé" à la taille de ressources, d'énergie et de temps. Comme vous êtes "autorisé" à faire faire le rot à haute voix à l'office. Si vous allez hors limites, vous risquez d'être mis à pied pour être incompétents.
Dans SQL Server 2008, le nombre maximum de tables que vous pouvez avoir dans une sélection est uniquement limitée par les ressources disponibles (source).
Dans SQL Server 2005, il y avait une 256 limite de la table pour une sélection unique (source).
Bien, si vous arrivez à ces sortes de nombres, alors je serais un peu concerné tbh!
"Raymond Chen note que si vous avez à se demander d'où le système d'exploitation limites sont, vous avez probablement fait quelque chose de mal" codinghorror.com/blog/2007/10/... La seule fois où je l'ai jamais vu quelqu'un frapper à la limite quand ils bêtement utilisé vues à l'appel de points de vue qui appelle les points de vue, etc. Si vous êtes à l'aide de points de vue à l'appel de vues, il est temps d'arrêter maintenant alors que votre système est toujours fonctionnel (pas seulement d'exécuter dans les limites, mais vous devrez couper les problèmes de performance à long avant de vous lancer dans les limites de quel peut être appelé). Nous n'avons légitimement frappé la limite de 256 dans SQL 2005 une fois.
Pour inner join, max 256 tables peuvent être jointes.
Pour outer join, max 2 tables peuvent être jointes.
Source: formation en salle de classe.
Je vous suggère de demander un remboursement de cette formation. C'est facile à écrire une requête montrant que plus de 2 tables peut être externe joint.
Les limites de SQL Server sont répertoriés ici
Le nombre de tables dans la requête n'est limitée que par la quantité de ressources disponibles.
OriginalL'auteur codingbadger
Autres réponses déjà donner la réponse directe à votre question
Cependant, même si SQL Server avec succès compile un plan pour votre requête, cela ne signifie pas que vous devriez. Le plus vous avez rejoint le exponentiellement plus grande de l'espace de possibles plans de requête et vous pouvez très bien être très sous-optimale des plans.
Pour une requête avec 12 rejoint le nombre possible de commandes jointure est 28,158,588,057,600. En outre, chaque jointure peut être de trois algorithmes de hachage, les boucles imbriquées, de fusion)
Dans le livre "SQL server 2005 pratique de dépannage" Cesar Galindo-Legaria dit
Max de 5 est une bonne recommandation. Pour left join sur une table, ce serait de 120 plans de requête possibles et pour d'autres d'un scénario jusqu'à 1680 plans. Vous aurez une bonne chance que SQL va faire un bon choix de ceux-ci. Dans certains cas, plus peut être justifiée en fonction de la requête et de la taille des tables (votre temps de besoin de code / gain de performance). Pour ce qui est "autorisé" dépend de votre politique, mais, techniquement, vous êtes "autorisé" à la taille de ressources, d'énergie et de temps. Comme vous êtes "autorisé" à faire faire le rot à haute voix à l'office. Si vous allez hors limites, vous risquez d'être mis à pied pour être incompétents.
OriginalL'auteur Martin Smith
Dans SQL Server 2008, le nombre maximum de tables que vous pouvez avoir dans une sélection est uniquement limitée par les ressources disponibles (source).
Dans SQL Server 2005, il y avait une 256 limite de la table pour une sélection unique (source).
Bien, si vous arrivez à ces sortes de nombres, alors je serais un peu concerné tbh!
La seule fois où je l'ai jamais vu quelqu'un frapper à la limite quand ils bêtement utilisé vues à l'appel de points de vue qui appelle les points de vue, etc. Si vous êtes à l'aide de points de vue à l'appel de vues, il est temps d'arrêter maintenant alors que votre système est toujours fonctionnel (pas seulement d'exécuter dans les limites, mais vous devrez couper les problèmes de performance à long avant de vous lancer dans les limites de quel peut être appelé).
Nous n'avons légitimement frappé la limite de 256 dans SQL 2005 une fois.
OriginalL'auteur AdaTheDev
Pour
inner join
, max 256 tables peuvent être jointes.Pour
outer join
, max 2 tables peuvent être jointes.Source: formation en salle de classe.
OriginalL'auteur sam