Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Максимальное количество элементов внутри IN  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
Привет.
Никак не могу найти ответа на следующий вопрос: есть ли ограничение на максимальное количество значений внутри оператора IN? В Oracle есть и это четко описано в документации:
"A comma-delimited list of expressions can contain no more than 1000 expressions. A comma-delimited list of sets of expressions can contain any number of sets, but each set can contain no more than 1000 expressions."
В MSDN'е есть сноска: "Including an extremely large number of values (many thousands) in an IN clause can consume resources and return errors 8623 or 8632", но вот сколько это их "many thousands"?
25 авг 12, 00:36    [13062947]     Ответить | Цитировать Сообщить модератору
 Re: Максимальное количество элементов внутри IN  [new]
загнем сервер?
Guest
ну так наверное зависит от Ваших "ресурсов" и от размера этих элементов.
поди есть разница, если это целые элементы или это varchar(max).
напишите запрос, где в подзапросе с IN что-то вроде
select replicate(cast(VASHE_TEXTOVOE_POLE as varchar(max)), 10000) from VASHA_BOLSHAJA_TABLITSA

таблицу сразу в миллион строк возьмите, чтоб сразу миллион элементов в IN попал и ошибка вылезла,
и фильтр меняйте на таблицу, пока не прокатит без ошибок.
25 авг 12, 01:06    [13063001]     Ответить | Цитировать Сообщить модератору
 Re: Максимальное количество элементов внутри IN  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
in - это не только "comma-delimited list of expressions" если что.
25 авг 12, 01:16    [13063029]     Ответить | Цитировать Сообщить модератору
 Re: Максимальное количество элементов внутри IN  [new]
Гришков Максим
Member

Откуда: СПб
Сообщений: 324
загнем сервер?,
Вопрос был не в том, как можно добраться до этой ошибки (это и так понятно), а в том, знает ли кто-нибудь сколько это "many thousands".
загнем сервер?
ну так наверное зависит от Ваших "ресурсов" и от размера этих элементов

Что понимаете под "Ваших "ресурсов"" - объем ОЗУ? Квота? ОС? Версия SQLServer'а? Или что?
загнем сервер?
поди есть разница, если это целые элементы или это varchar(max).

Не факт.
25 авг 12, 10:15    [13063318]     Ответить | Цитировать Сообщить модератору
 Re: Максимальное количество элементов внутри IN  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
Гришков Максим,

Можете потестировать сами от чего это зависит. И подумать во время тестов о практической целесообразности всего происходящего.
Написано же в документации (many thousands) - всех устраивает, потому что нормальный человек туда больше сотни значений не запихает, а надо больше, тогда:
Гавриленко Сергей Алексеевич
in - это не только "comma-delimited list of expressions" если что.
25 авг 12, 10:27    [13063328]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить