Какое максимальное количество соединений разрешено в SQL Server 2008? - PullRequest
16 голосов
/ 01 апреля 2010

Какое максимальное количество соединений разрешено в SQL Server 2008?

Ответы [ 4 ]

13 голосов
/ 11 июня 2013

Другие ответы уже дают прямой ответ на ваш вопрос

Ограничено только доступными ресурсами

Однако даже если SQL Server успешно составляет план для вашего запроса, это не значит, что вы должны это делать. Чем больше у вас соединений, тем больше будет пространство возможных планов запросов, и вы можете получить очень неоптимальные планы.

Для запроса с 12 объединениями количество возможных порядков объединения составляет 28 158 588 057 600 . Кроме того, каждое соединение может иметь три возможных алгоритма (хеш, вложенные циклы, слияние)

В книге «Практическое устранение неполадок SQL Server 2005» Сезар Галиндо-Легарья говорит

Если вы объединяете более 20 таблиц, скорее всего, оптимизатор не обзор всего пространства поиска, но больше полагаться на эвристику .... мы видели приложения, которые запускают регулярные запросы, имеющие дело с более 100 столов. Хотя можно выполнять такие очень большие запросы, вы действительно растягивают систему в этих случаях и должны быть очень осторожно зайти так далеко

10 голосов
/ 01 апреля 2010

В SQL Server 2008 максимальное количество таблиц, которое вы можете иметь в SELECT, ограничено только доступными ресурсами ( source ).

В SQL Server 2005 было ограничение в 256 таблиц для одного SELECT ( источник ).

Хотя, если вы наберете такие цифры, я бы немного встревожился!

10 голосов
/ 01 апреля 2010

Ограничения для SQL Server перечислены здесь

Количество таблиц в запросе ограничено только количеством доступных ресурсов.

0 голосов
/ 02 августа 2016

Для inner join можно объединить до 256 таблиц. Для outer join можно объединить до 2 таблиц.

Источник: аудиторная тренировка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...