2010-04-01 13 views

risposta

9

Le limitazioni per SQL Server sono elencati here

Il numero di tabelle per query è limitato solo dalla quantità di risorse disponibili.

+0

Grazie Barry per la risposta. – kandarp

9

In SQL Server 2008, il numero massimo di tabelle che è possibile avere in un SELECT è limitato solo dalle risorse disponibili (source).

In SQL Server 2005, era presente un limite di 256 tabelle per un singolo SELECT (source).

Tuttavia, se ti stai avvicinando a questo tipo di numeri, sarei un po 'preoccupato per te!

+2

"Raymond Chen nota che se devi chiedere dove sono i limiti del sistema operativo, probabilmente stai facendo qualcosa di sbagliato" http://www.codinghorror.com/blog/2007/10/pushing-operating-system-limits. html –

+3

L'unica volta che ho visto qualcuno colpire i limiti è stato quando hanno usato scioccamente le viste per chiamare le viste che hanno chiamato viste, ecc. Se si stanno utilizzando le viste per visualizzare le viste, è ora di smettere quando il sistema è ancora funzionante (non solo ti imbatterai nei limiti, ma avrai dei gravi problemi di prestazioni molto prima di poter correre nei limiti del waht che può essere chiamato). – HLGEM

+1

Abbiamo raggiunto legittimamente il limite 256 in SQL 2005 una volta. – Joshua

10

Le altre risposte già danno la risposta diretta alla sua domanda

limitata solo dalle risorse disponibili

Tuttavia, anche se SQL Server viene compilato con successo un piano per la query che non vuol dire che dovresti. Più join avrai lo spazio esponenzialmente più grande di possibili piani di query e potresti ottenere piani molto sub ottimali.

Per una query con 12 join il numero di ordini di join possibili è 28,158,588,057,600. Inoltre ogni join può essere di tre possibili algoritmi (hash, cicli annidati, merge)

Nella "risoluzione dei problemi pratici SQL Server 2005" libro Cesar Galindo-Legaria dice

Se si stanno unendo più di 20 tavoli, è probabile che l'ottimizzatore non sia rivedere l'intero spazio di ricerca ma basandoci maggiormente sull'euristica .... abbiamo visto applicazioni che eseguono query regolari che si occupano di oltre 100 tabelle. Mentre è possibile eseguire tali molto query di grandi dimensioni, si davvero stanno mettendo il sistema in questi casi e dovrebbe essere molto attenti andare così lontano

+0

Come da linee guida Microsoft, più di cinque tabelle non possono accedere a SQL Server. È corretto? Se non è corretto, secondo la tua prospettiva, a quante tabelle è consentito l'accesso in SQL Server per prestazioni migliori. – RGS

-4

Per inner join, max 256 tabelle possono essere uniti. Per outer join, è possibile unire fino a 2 tabelle.

Fonte: formazione in aula.

+0

Ti suggerisco di chiedere un rimborso per questo corso.È banale scrivere una query che mostri che più di 2 tabelle possono essere unite esterne. –

Problemi correlati