SELECT * FROM H_TABLE
->결과
MANAG_NO |
F01 |
F02 |
F03 |
F04 |
F05 |
F06 |
F07 |
F08 |
F08 |
F10 |
2001-00970 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
2004-01005 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1994-01290 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1994-01207 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1994-01233 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1994-01294 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
2001-00539 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
2001-00597 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
sample query1)
SELECT '1' GRP, MANAG_NO FROM H_TABLE WHERE F01 = '0' AND F02 =
'0'
UNION ALL SELECT '2' GRP, MANAG_NO FROM H_TABLE WHERE F03 = '0' AND
F04 = '0' AND F05 = '0'
UNION ALL SELECT '3' GRP, MANAG_NO FROM H_TABLE WHERE F06 = '0' AND
F07 = '0'
UNION ALL SELECT '4' GRP, MANAG_NO FROM H_TABLE WHERE F08 = '0' AND
F09 = '0' AND F10 = '0'
UNION ALL SELECT '5' GRP, MANAG_NO FROM H_TABLE WHERE F06 = '1' AND
F08 = '0' AND F10 = '0'
UNION ALL SELECT '6' GRP, MANAG_NO FROM H_TABLE WHERE F07 = '1' AND
F09 = '0' AND F10 = '0'
결과1 ->
GRP MANAG_NO
===================
1 2004-01005
1 2001-00539
1 2001-00597
2 2001-00970
2 2004-01005
2 1994-01207
2 2001-00539
2 2001-00597
3 2004-01005
3 1994-01290
3 1994-01294
3 2001-00539
3 2001-00597
4 1994-01290
4 1994-01294
4 2001-00539
H_TABLE 라는 테이블의 내용은 위와 같습니다.
여기서 sample query1 쿼리를 사용해서 결과1을 얻어내고
있습니다.
어떻게는 원하는 결과를 얻고는 있지만
UNION ALL을 이용해서 하니 full스캔을 6번 하고있다고 하더군요
좀더 효율적인 다른 쿼리를 이용해서 결과1을 얻고 싶습니다.
어떻게 하면 되나요?
나름대로 decode나 case문을 이용해서 해보고 있지만 쉽지가
않습니다.
고수님들의 많은 조언좀 부탁드려요
|