2014-11-06 3 views
-1

큰 테이블의 열을 살펴보고 해당 열에 둘 이상의 고유 값이 있는지 확인하려고합니다. 값이 무엇인지 또는 값이 몇 개인 지 신경 쓰지 않습니다. 둘 이상의 값 (예 : 해당 열의 값이 다른 두 행)이 있으면 true를 반환하고 그렇지 않으면 false를 반환하면됩니다. 성과는 나의 주요 관심사입니다. SQL에서 이것을 구현하는 가장 좋은 방법은 무엇입니까?SQL - 열에 고유 값이 두 개 이상있는 경우 찾습니다.

EDIT : 테이블에는 MSSQL에서 1M + 행이 있습니다. 열은 여러 데이터 유형을가집니다. 일부는 null 가능하고 일부는 허용되지 않습니다.

+1

큰 테이블은 무엇입니까? 천만 기록? 더? 적게? 어떤 서버를 사용하고 있습니까? 신탁? mySQL? MSSQL? 예제 행이 있습니까? 어떤 데이터 유형을 비교하고 있습니까? 너의 측면에 답이없는 질문이 많다 ... –

+0

확인하려는 열에 대해 고유 한 색인을 만들고 색인 생성에 실패했는지 확인하십시오. –

답변

2

나는 완전히 원래 질문을 오해했다고 생각합니다. 값이 모두 이 아닌지 인 지 알고 싶습니다 ("별개"라는 단어를 사용하면 나를 버립니다). 당신이 알고 싶다면

, 당신은 할 수 있습니다 :

select (case when exists (select 1 from table t2 where t2.col <> t.col) 
      then 'true' 
      else 'false' 
     end) 
from (select top 1 col from table t) t; 

from 절은 임의의 값을 선택합니다. exists은 다른 값을 찾기 시작하고 처음 발생한 값에서 멈춰야합니다. 일반적으로 성능을 위해 열에 색인을 추가하는 것이 좋습니다.

관련 문제