[SQL] 는 SQL Server의 "IN"절 제한
SQL는 SQL Server의 "IN"절 제한
아무도 IN 절을 위해 (일치를위한 테스트) 한 표현의 목록에있을 수있는 값의 수에 대한 제한이 무엇인지 알고 있나요?
해결법
-
==============================
1.예,이 한계이지만, MSDN은 단지 그것을 "수천"거짓말을 지정합니다 :
예,이 한계이지만, MSDN은 단지 그것을 "수천"거짓말을 지정합니다 :
세부 사항에 이러한 오류를 보면, 우리는이 제한 IN에있는 것이 아니라 일반적으로 쿼리 복잡성에 적용 참조 :
-
==============================
2.그것은에만있는 것이 아니라 쿼리 계획 생성기 초과 메모리 제한과 관련이 있습니다. 나는 수천 그것은 종종 오류 사항을 확인 할 수 있지만 먼저 테이블에 값을 삽입하여 해결할 수 있습니다와 같이 쿼리를 바꿔
그것은에만있는 것이 아니라 쿼리 계획 생성기 초과 메모리 제한과 관련이 있습니다. 나는 수천 그것은 종종 오류 사항을 확인 할 수 있지만 먼저 테이블에 값을 삽입하여 해결할 수 있습니다와 같이 쿼리를 바꿔
select * from b where z in (select z from c)
값이 당신이 원하는 곳에 절에 테이블 C에 있습니다. 우리는 1 만 값의 절에 성공적으로 이것을 사용했다.
-
==============================
3.사용중인 데이터베이스 엔진에 따라, 명령의 길이에 제한이있을 수 있습니다.
사용중인 데이터베이스 엔진에 따라, 명령의 길이에 제한이있을 수 있습니다.
SQL Server는 매우 큰 한계가있다 :
그래서, 큰 IN 절을 위해, 그것은 값 삽입, 임시 테이블을 생성하고이 가입 할 것이 좋습니다. 그것은 빠르게도 작동합니다.
()가 한계입니다,하지만 당신은에서의 별도의 블록으로 당신의 가치를 나눌 수 있습니다
Select * From table Where Col IN (123,123,222,....) or Col IN (456,878,888,....)
2008 년 테이블 반환 매개 변수, 또는 여기에 설명 된 몇 가지 방법을 사용
-
==============================
4.당신은 또한 발생할 수있는 다음 - 대신 하위 쿼리 여기서 X (1, 2, 3 ...)의 리터럴 값을 사용하는 경우 쿼리 (JDBC, Hiberante, SQL-GUI의 일종)을 실행하는 방법에 따라와 오류:
당신은 또한 발생할 수있는 다음 - 대신 하위 쿼리 여기서 X (1, 2, 3 ...)의 리터럴 값을 사용하는 경우 쿼리 (JDBC, Hiberante, SQL-GUI의 일종)을 실행하는 방법에 따라와 오류:
한계는 이러한 경우에 (또는 더 적은 다른 매개 변수가 존재할 때, 너무) 2100 것 그래서.
from https://stackoverflow.com/questions/21178390/in-clause-limitation-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 경고를 얻기 : Null 값이 집계 또는 다른 SET 연산에 의해 제거 (0) | 2020.05.25 |
---|---|
[SQL] using 문 내부 SqlConnection.Close () (0) | 2020.05.25 |
[SQL] '와'... 이전 문 키워드 근처의 구문이 잘못은 세미콜론으로 종료되어야합니다 (0) | 2020.05.25 |
[SQL] 어떻게 제대로 MySQL의에서 CASE..WHEN 사용합니까 (0) | 2020.05.25 |
[SQL] 사슬로 매인 선택 박스 (국가, 주, 도시) (0) | 2020.05.25 |