block 단위의 io에서 유리하다.
ex) 1만 개의 row를 select 할 경우.
1. 정규화 되지 않은 통 테이블
code status name date
4byte, 4byte, 20byte, 10byte : 38 byte block size
38byte * 10000 = 380k
2. 간단한 정규화가 된 테이블 1, 2
code name
4byte, 20byte : 24 byte block size
code status date
4byte, 4byte, 10byte : 18byte block size
1은 총 10개. 2에서 1만 row select
18byte * 10000 + 24byte * 10 : 180.24kbyte
join 쿼리 작성시 주의 할 점.
먼저 drive in이 되는 테이블의 data 가 먼저 상수화 되고 치환이 되기 때문에
data범위를 줄일 수 있는 쪽을 먼저 drive in 하게 한다.
outer join을 하게 된다면 무조건 outer join이 걸리지 않은 테이블 부터 drive in 된다.
따라서 위에 언급된 data범위를 줄일 수 있는 쪽이 먼저 drive in되지 않을 수 있다는 점을 명심한다.
Posted by SADBLUE