2010-04-01 4 views

Répondre

9

Les limites pour SQL Server sont répertoriés here

Le nombre de tables par requête est seulement limitée par la quantité de ressources disponibles.

+0

Merci Barry pour la réponse. – kandarp

9

Dans SQL Server 2008, le nombre maximal de tables que vous pouvez avoir dans un SELECT est limité uniquement par les ressources disponibles (source).

Dans SQL Server 2005, il y avait une limite de 256 tables pour un seul SELECT (source). Cependant, si vous vous en tenez à ce genre de chiffres, je serais un peu inquiet, hein!

+2

"Raymond Chen note que si vous devez demander où sont les limites du système d'exploitation, vous faites probablement quelque chose de mal" http://www.codinghorror.com/blog/2007/10/pushing-operating-system-limits. html –

+3

La seule fois où j'ai vu quelqu'un atteindre les limites était quand il utilisait des vues pour appeler des vues qui appelaient des vues, etc. Si vous utilisez des vues pour appeler des vues, il est temps de vous arrêter maintenant que votre système est encore fonctionnel (non seulement vous rencontrerez les limites, mais vous aurez des problèmes de performance bien avant que vous ne rencontriez les limites de waht). – HLGEM

+1

Nous avons légitimement atteint la limite 256 dans SQL 2005 une fois. – Joshua

10

Les autres réponses donnent déjà la réponse à votre question

limitée par les ressources disponibles

Cependant, même si SQL Server compile avec succès un plan pour votre requête qui ne veut pas dire que vous devriez. Plus vous aurez de correspondances, plus l'espace des plans de requêtes possibles sera exponentiellement grand et vous aurez peut-être des plans très sous-optimaux.

Pour une requête avec 12 jointures, le nombre d'ordres de jointure possibles est 28,158,588,057,600. En outre, chaque jointure peut être de trois algorithmes possibles (hachage, boucles imbriquées, fusion)

Dans le livre « SQL Server 2005 dépannage pratique » Cesar Galindo-Legaria dit

Si vous joindrez plus de 20 tables, les chances sont que l'optimiseur ne soit pas en examinant l'ensemble de l'espace de recherche, mais en s'appuyant davantage sur l'heuristique .... nous avons vu des applications qui exécutent des requêtes régulières traitant de plus de 100 tables. Bien qu'il soit possible d'exécuter ces requêtes volumineuses, vous vraiment étirez le système dans ces cas et devrait être très prudent aller loin

+0

Conformément aux instructions Microsoft, plus de cinq tables ne sont pas autorisées à se joindre à SQL Server. Est-ce correct? Si ce n'est pas le cas, selon votre perspective, le nombre de tables autorisées à se joindre à SQL Server pour de meilleures performances. – RGS

-4

Pour inner join, tables max 256 peuvent être joints. Pour outer join, 2 tables maximum peuvent être jointes.

Source: formation en classe.

+0

Je vous suggère de demander un remboursement sur cette formation.Il est trivial d'écrire une requête montrant que plus de 2 tables peuvent être jointes. –

Questions connexes