IT박스

테이블에 행이 있는지 여부 확인 SQL Server 2005

itboxs 2020. 12. 7. 07:59
반응형

테이블에 행이 있는지 여부 확인 SQL Server 2005


테이블에 행이 포함되어 있는지 확인하는 방법 SQL Server 2005?


무슨 목적을 위해?

  • IF에 대한 가장 빠른 것은 IF EXISTS (SELECT * FROM Table)...
  • 결과 집합의 SELECT TOP 1 1 FROM Table경우 0 개 또는 1 개의 행을 반환합니다.
  • 개수 (0 또는 0이 아님)가있는 정확히 하나의 행에 대해 SELECT COUNT(*) FROM Table

또한 사용할 수 있습니다

select case when exists (select 1 from table) 
          then 'contains rows' 
          else 'doesnt contain rows' 
       end

또는 특정 레코드에 대한 하위 행이 있는지 확인하려면 다음을 수행하십시오.

select * from Table t1
where exists(
select 1 from ChildTable t2
where t1.id = t2.parentid)

또는 절차에서

if exists(select 1 from table)
begin
 -- do stuff
end

기타처럼 다음과 같이 사용할 수 있습니다.

IF NOT EXISTS (SELECT 1 FROM Table)
  BEGIN 
    --Do Something
  END 
ELSE
  BEGIN
    --Do Another Thing
  END

최상의 성능을 위해 * 대신 특정 열 이름을 사용하십시오. 예를 들면 다음과 같습니다.

SELECT TOP 1 <columnName> 
FROM <tableName> 

이것은 전체 열 목록을 반환하는 대신 하나만 반환하기 때문에 최적입니다. 시간을 절약 할 수 있습니다.

또한 값이있는 경우 첫 번째 행만 반환하면 더 빨라집니다. 실제로 결과로 하나의 값만 얻었습니다. 행이 있으면 값이없고 행이 없으면 값이 없습니다.

분산 방식으로 테이블을 사용하는 경우, 서버에서 클라이언트로 하나의 값만 전송하는 것보다 훨씬 빠릅니다.

또한 가능한 한 적은 리소스를 사용할 수있는 열에서 데이터를 가져 오려면 모든 열 중에서 현명하게 선택해야합니다.


select count(*) from table(또는 속도가 중요한 경우 * 대신 인덱싱 된 열)을 사용하여 행을 계산할 수 없습니까?

그렇지 않다면 이 기사 가 올바른 방향을 제시 할 수 있습니다.


빠른:

SELECT TOP (1) CASE 
        WHEN **NOT_NULL_COLUMN** IS NULL
            THEN 'empty table'
        ELSE 'not empty table'
        END AS info
FROM **TABLE_NAME**

참고 URL : https://stackoverflow.com/questions/2145879/check-whether-a-table-contains-rows-or-not-sql-server-2005

반응형