programing

표에 SELECT 1이 있는 이유는 무엇입니까?

subpage 2023. 6. 18. 16:02
반응형

표에 SELECT 1이 있는 이유는 무엇입니까?

가상 SQL을 발견했습니다. 원래 의도가 무엇인지 잘 모르겠습니다. 다음과 같습니다.

SELECT COUNT (*)
INTO miss
FROM billing b
WHERE b.network= network1 
and NOT EXISTS (SELECT 1 from vas NV WHERE NV.network =  
b.network);

선택 1이 있고 없는 이유는 무엇입니까?

사용 시EXISTS키워드 하위 선택 문이 있어야 하고 행의 존재만 확인되며 행의 내용은 중요하지 않습니다. SELECT반환되는 열 내부의 내용을 제어하는 키워드입니다. SELECT1또는NV.network같은 수의 행을 반환합니다.

따라서 원하는 것을 선택할 수 있으며, 다음을 포함하는 표준 방법을 선택할 수 있습니다.SELECT NULL또는SELECT 1.

질의에 대한 대안은 다음과 같습니다.

SELECT count(*) INTO miss
  FROM billing b
  LEFT JOIN vas NV ON NV.network = b.network
 WHERE b.network = network1
   AND NV.network IS NULL

(왼쪽 조인이 오른쪽 열을 채웁니다.)NULL값은 다음과 같습니다.ON조건을 일치시킬 수 없습니다.

SELECT 1 from vas NV WHERE NV.network =  b.network

이 쿼리가 행을 반환하면 NV 테이블에 청구 테이블의 레코드와 일치하는 레코드가 있음을 의미합니다.

NOT REVERS는 NV 테이블의 레코드가 청구 테이블의 레코드와 일치하지 않을 경우 이를 무효화하여 WHERE 절을 충족합니다.

존재 대 IN(또는 존재하지 않음 대 존재하지 않음)의 사용에 대한 훌륭한 AskTom Q&A가 있습니다.

http://asktom.oracle.com/pls/asktom/f?p=100:11:1371782877074057 ::::P11_QUESTION_ID:953229842074

기본적으로 EXISTES를 사용하면 하위 선택에서 행의 존재만 확인하고 일치하는 모든 행(IN)은 확인하지 않습니다.따라서 존재하거나 존재하지 않음을 사용할 때 특정 값을 실제로 선택할 필요가 없으므로 자리 표시자(이 경우 "1")를 선택하면 충분합니다.

특정 SQL 문에서 NOT EXISTS 절은 기본 SELECT가 VAS 테이블에 해당하는 행이 없는 행만 반환하도록 합니다.

이 코드는 주로 성능 관점에서 작성된 것입니다.

나는 내부 질의에 대해서만 언급하고 있습니다.사용자에 대한 설명이 필요했기 때문입니다.내가 사용한 모든 SQL은 위에서 사용자가 사용한 실제 쿼리에 삽입되어야 합니다.

and NOT EXISTS (SELECT 1 from vas NV WHERE NV.network =  
b.network);

내부 쿼리 설명 일반적으로 사람들이 입력할 때 사용합니다.select NV.netword그러나 이는 데이터가 존재하지 않는지 확인하는 데 사용되는 데이터를 반환합니다.따라서 내부 쿼리에서 반환되는 모든 항목은 상위 쿼리에서도 확인되지 않는 것이 이상적입니다.설명 계획에서 바이트 수를 줄이기 위해 다음을 사용합니다.select 1최소 바이트 비용을 가지며, 이를 통해 쿼리 비용을 절감할 수 있습니다.

차이점을 보려면 Oracle sql developer를 다운로드하여 설명 계획 창에서 쿼리를 모두 실행하고 각 쿼리에 대한 바이트 열을 확인하는 것이 좋습니다.

SELECT nv.network from vas NV WHERE NV.network =  b.network
// cost will be depended on the value nv.network contain and that is selected in the where condition

하는 동안에

SELECT 1 from vas NV WHERE NV.network =  b.network 
// cost will be independent of the column and cost lesser bytes selected and lesser cost.

존재하지 않습니다. 다른 답변으로 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/7633086/why-is-there-a-select-1-from-table

반응형