안녕하세요.
DB 배우면서 간단하게 설계 중인데 여러가지 생각 때문에 고민하다가 질문 올립니다.
테이블은 item, chat 두개이구요
해당 item 페이지에서 글을 남기면 chat테이블에 등록됩니다.
no : int auto_increment primary key
parent : int << item의 NO와 일치합니다.
usrl : int << 유저 고유번호입니다.
text : varchar << 입력된 텍스트 입니다.
현재는 해당 item 페이지를 읽을 때 두 테이블에서 따로 데이터를 읽어오는 구조입니다.
chat을 로딩할때는 select * from chat where parent = 4 와 같은 쿼리를 이용합니다.
여기서 질문이 있는데요, chat에 데이터가 계속 축적되서 몇십만건이 쌓여있다고 할 때
페이지를 로딩할 때마다 테이블 전체의 parent를 비교해서 해당 text를 로딩해야 하는데
이때 부하나 시간적인 측면에서 낭비가 심할 것 같아요.
index를 쓰자니 데이터 입출력이 잦은 테이블이라 오히려 손해일것 같기도 하구요..
이런 상황에서는 어떻게 설계를 해야 할까요?(쿼리 측면에서도..)
고수님들.. 한수 부탁드립니다!! |