복붙노트

[SQL] CASE 대 디코드

SQL

CASE 대 디코드

그 항상 가능가 CASE로 DECODE를 대체하고있는 하나의 성능을 위해 더 나은 경우 이전 질문을 참조하면, 궁금 해서요?

해결법

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

    1.언제나 오라클과 ... AskTom ...

    언제나 오라클과 ... AskTom ...

    이 게시물에서 ...

    성능의 관점에서 그들은 문서는 약간의 속도 차이를 언급하지만, 특정 문장을 벤치마킹하지 않고 말을하기 어렵다 다시 이상, 거의 같은 것 같다.

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

    2.이 DECODE와 CASE 사이에 하나의 큰 차이점이며 NULL을 비교하는 방법을 함께 할 수있다. 당신이 NULL로 NULL을 비교하면 DECODE는 "true"를 반환합니다. CASE는하지 않습니다. 예를 들면 :

    이 DECODE와 CASE 사이에 하나의 큰 차이점이며 NULL을 비교하는 방법을 함께 할 수있다. 당신이 NULL로 NULL을 비교하면 DECODE는 "true"를 반환합니다. CASE는하지 않습니다. 예를 들면 :

    DECODE(NULL, NULL, 1, 0)
    

    '1'을 반환합니다.

    CASE NULL
        WHEN NULL THEN 1
        ELSE 0
    END
    

    '0'을 반환합니다. 당신은 그것을로 작성해야 :

    CASE
        WHEN NULL IS NULL THEN 1
        ELSE 0
    END
    
  3. ==============================

    3.CASE는 성명과 DECODE 함수입니다 우리는 WHERE 절에 CASE를 사용할 수 있으며 WHERE 절에 DECODE를 사용할 수 없습니다. DECODE는 CASE 모든 관계 연산자를 지원 할 수있는 유일한 평등 연산자를 확인하실 수 있습니다 DECODE는 SQL에서 사용할 수있는 경우와 SQL 및 PL / SQL에서 사용할 수있는 경우에만 CASE 더 DECODE보다.

    CASE는 성명과 DECODE 함수입니다 우리는 WHERE 절에 CASE를 사용할 수 있으며 WHERE 절에 DECODE를 사용할 수 없습니다. DECODE는 CASE 모든 관계 연산자를 지원 할 수있는 유일한 평등 연산자를 확인하실 수 있습니다 DECODE는 SQL에서 사용할 수있는 경우와 SQL 및 PL / SQL에서 사용할 수있는 경우에만 CASE 더 DECODE보다.

    http://www.oraclegeneration.com/2014/01/sql-query-interview-questions.html : 당신은 더 찾을 수 있습니다

  4. ==============================

    4.성능 관점에서, 오라클의 디코딩 및 CASE는 어떤 차이가되지 않습니다.

    성능 관점에서, 오라클의 디코딩 및 CASE는 어떤 차이가되지 않습니다.

    그러나 엑사에서, 디코드 빠른 CASE보다.

    데이터가 존재하지만 케이스 DB 저장 레벨로부터 데이터를 수신 DB 인스턴스 레벨에서 수행되는 경우 디코딩 동작은 스토리지 서버 레벨에서 수행된다.

    스토리지 및 DB 서버 사이의 데이터의 네트워크 전송 (인피니 밴드 연결) 이하 비록 당신이 디코드 한 Statment를 사용할 때, 그 전송은 피할 수있다

  5. ==============================

    5.

    select (DECODE(NULL, NULL, 1, 0)) from dual;
    
    select (CASE
        WHEN NULL IS NULL THEN 1
        ELSE 0
    
    END
    )
    from dual;
    

    모두 1을 반환

  6. ==============================

    6.두 NULL 비교에 NULL을 0으로 돌려 1의 값과 CASE를 반환하는 대신 DECODE의 1로 값을 반환합니다.

    두 NULL 비교에 NULL을 0으로 돌려 1의 값과 CASE를 반환하는 대신 DECODE의 1로 값을 반환합니다.

  7. from https://stackoverflow.com/questions/3193692/case-vs-decode by cc-by-sa and MIT license