비트 타입의 컬럼을 0일때 조회 / 1일때 조회 / 모두( 0 / 1 ) 조회 하려고 합니다.
간결하고 성능을 좋게하기 위해서 어떠한 방법으로 짜야할까요.ㅠ.ㅠ
by 마농
[2022.02.09 17:25:02]
-- 성능은 잘 모르겠네요. 쿼리는 다음과 같이 --
SELECT *
FROM t
WHERE @p IS NULL
OR c = @p
;
by 한번사는인생
[2022.02.09 17:31:12]
고맙습니다.
삭제여부와 같은 컬럼을 만들때 저는 비트 타입으로 만듭니다.
그러면 BIT를 TINYINT로 변경하여, 비트연산을 해서 조회하는건 어떻게 생각하시나요?
예를 들어 0 / 1 을 1 / 2로 변경하여.
파라미터값을 1 / 2 / 3 을 하여.
1이 들어오면 1만 조회 / 2가 들어오면 2만 조회 / 3이 들어오면 1 / 2 모두 조회.
by 마농
[2022.02.09 17:34:13]
-- 파라미터 0, 1, NULL(모두조회) 로 답변 드린 것입니다.
SELECT *
FROM t
WHERE @p IS NULL
OR c = @p
;
-- 파라미터 1, 2, 3(모두조회) 라고 해도 쿼리는 유사합니다.
SELECT *
FROM t
WHERE @p = 3
OR c = @p
;
-- 파라미터 1, 2, 3(모두조회) 으로 비트연산(&)도 가능하겠네요.
-- 다만 성능은 어찌 될지 모르겠네요.
SELECT *
FROM t
WHERE c & @p > 0
;
by 한번사는인생
[2022.02.09 17:43:56]
항상 고맙습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.