by 한번사는인생 [SQLServer] [2022.02.09 16:11:23]
테이블 컬럼이 비트 타입입니다.
프로시저에서 인풋 파라미터로 값을 받아서
비트 타입의 컬럼을 0일때 조회 / 1일때 조회 / 모두( 0 / 1 ) 조회 하려고 합니다.
간결하고 성능을 좋게하기 위해서 어떠한 방법으로 짜야할까요.ㅠ.ㅠ
-- 성능은 잘 모르겠네요. 쿼리는 다음과 같이 --
SELECT
*
FROM
t
WHERE
@p
IS
NULL
OR
c = @p
;
고맙습니다.
삭제여부와 같은 컬럼을 만들때 저는 비트 타입으로 만듭니다.
그러면 BIT를 TINYINT로 변경하여, 비트연산을 해서 조회하는건 어떻게 생각하시나요?
예를 들어 0 / 1 을 1 / 2로 변경하여.
파라미터값을 1 / 2 / 3 을 하여.
1이 들어오면 1만 조회 / 2가 들어오면 2만 조회 / 3이 들어오면 1 / 2 모두 조회.
-- 파라미터 0, 1, NULL(모두조회) 로 답변 드린 것입니다.
-- 파라미터 1, 2, 3(모두조회) 라고 해도 쿼리는 유사합니다.
@p = 3
-- 파라미터 1, 2, 3(모두조회) 으로 비트연산(&)도 가능하겠네요.
-- 다만 성능은 어찌 될지 모르겠네요.
c & @p > 0
항상 고맙습니다.