복붙노트

[SQL] SQL IN 절 1000 항목 제한

SQL

SQL IN 절 1000 항목 제한

SQL IN 절에서 1000 개 이상의 항목을 넣을 수 있습니까? 우리는 우리의 오라클 데이터베이스를 처리 할 수없는 문제를 받고있다.

그렇다면, 우리가 어떻게 SQL IN 절에서 1000 개 이상의 항목을 배치해야합니까?

그렇지 않다면, 그 밖의 무엇을 나는 할 수 있습니까?

해결법

  1. ==============================

    1.당신은 INNER에 IN 절은 절을 가입 변환해야합니다.

    당신은 INNER에 IN 절은 절을 가입 변환해야합니다.

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

    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
    

    또한 성능을 많이 얻을 것입니다

  2. ==============================

    2.다른 답변 (또는 다른 대답 질문) 어떤에서 언급되지 않도록이 또 다른 해결 방법이있다 :

    다른 답변 (또는 다른 대답 질문) 어떤에서 언급되지 않도록이 또 다른 해결 방법이있다 :

    (1,2,3) 중의 X와 같은 문 상관은 ((1,1), (1,2), (1,3)) 및 1000 요소 한계 (1, X)로 다시 쓸 수는 더 이상 대다. 나는 X에 대한 인덱스로 테스트하고 설명했습니다 계획은 여전히 ​​오라클 액세스 술어를 사용하여 스캔 범위를보고합니다.

  3. ==============================

    3.우리는 같은 변수에 대한 하나 이상의 "IN"문을 가질 수 있습니다.

    우리는 같은 변수에 대한 하나 이상의 "IN"문을 가질 수 있습니다.

    예를 들어 :

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

    4.또 다른 방법:

    또 다른 방법:

    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
    --...
    )
    
  5. from https://stackoverflow.com/questions/4722220/sql-in-clause-1000-item-limit by cc-by-sa and MIT license