programing

SQL IN 1000 조항 항목 제한

powerit 2023. 3. 4. 15:12
반응형

SQL IN 1000 조항 항목 제한

SQL IN 절에 1000개 이상의 항목을 넣을 수 있습니까?Oracle 데이터베이스가 이를 처리할 수 없다는 문제가 발생하고 있습니다.

그렇다면 SQL IN 절에 1000개 이상의 항목을 넣으려면 어떻게 해야 합니까?

그렇지 않으면 어떻게 해야 하나요?

다른 답변(또는 다른 답변 질문)에서는 언급되지 않은 다른 해결 방법이 있습니다.

다음과 같은 문구가 있는 경우x in (1,2,3)라고 고쳐 쓸 수 있다(1,x) in ((1,1), (1,2), (1,3))1000 요소 제한은 적용되지 않습니다.지표를 달고 테스트를 해봤습니다.x또한 Oracle이 액세스 술어와 범위 스캔을 사용하고 있다는 보고서를 여전히 설명하십시오.

IN 구를 INSER JOIN 구로 변환해야 합니다.

이와 같은 쿼리를 변환할 수 있습니다.

SELECT  foo   
FROM    bar   
WHERE bar.stuff IN  
       (SELECT  stuff FROM asdf)

이런 질문에서요

SELECT  b.foo 
FROM    ( 
        SELECT  DISTINCT stuff 
        FROM    asdf ) a 
JOIN    bar b 
ON      b.stuff = a.stuff

퍼포먼스도 많이 얻을 수 있습니다.

같은 변수에 대해 여러 "IN" 문을 사용할 수 있습니다.

예:

select val
 from table
where val in (1,2,3,...)
or
val in (7,8,9,....)

임시 테이블을 생성할 여유가 없는 경우 WITH 절을 사용하여 시뮬레이션할 수 있습니다.

with t as (
  select 1 val from dual 
  union all select 2 from dual
  union all select 3 from dual
    ...
  union all select 5001 from dual
  union all select 5002 from dual
)
select * 
  from mytable
 where col1 in (select val from t)

물론, 내 테이블에도 같이 앉을 수 있어

나는 Gordy의 대답이 가장 마음에 든다. 단지 다른 방법을 보여주는 것뿐이다.

다른 방법:

SELECT COL1, COL2, COL3 FROM YOUR_TABLE
WHERE 1=1
AND COL2 IN (
SELECT VAL1 as FAKE FROM DUAL
UNION
SELECT VAL2 as FAKE FROM DUAL
UNION
SELECT VAL3 as FAKE FROM DUAL
--...
)

언급URL : https://stackoverflow.com/questions/4722220/sql-in-clause-1000-item-limit

반응형

'programing' 카테고리의 다른 글

json에 java  (0) 2023.03.04
WordPress 위젯의 동적 입력 필드  (0) 2023.03.04
서로 덮어쓰기 CSS 미디어 쿼리  (0) 2023.03.04
AngularJS set global ngModelOptions  (0) 2023.02.27
How to convert postgres json to integer  (0) 2023.02.27