php와 mysql연동시 테이블 및 row 처리속도에 관한질문...
조회수 1902 답변수 1 반응수 2 등록일 2016.09.06 21:39:18

안녕하세요!

간단한 질문입니다.

(php7/mysql)

예를들어 농구선수들의 상세 포지션이 position1~position10(10개) 이며,

각 포지션에서 필요한 능력치 종류는 stat1~stat10(10개)입니다.

uesr1이라는 한 선수가 있으면 이 선수는 position1~position10의 10개 포지션을 갖고있으며, 각 포지션당 stat1~stat10까지의 능력치를 갖고있습니다.

이를 웹상에서 구현하려고 할때,

1) 데이터베이스 테이블을 user_position1~user_position10까지 10개의 테이블을 만들고, 각 테이블에는 포지션에 맞는 선수의 정보가 한개의 row로 정리되어있다. 즉 테이블을 10개 쓰는경우 테이블당 1row, 10column사용.

2) 데이터베이스 테이블을 user_position 1개의 테이블만 쓰고, 이 테이블안에는 10개의 row로 한 user에 대한 스탯이 기록되어있다. 즉 테이블을 1개쓰는 경우 한 user에 대해 10row, 10column 사용.


질문1) 그냥 단순히 어떤 한 선수의 10개의 포지션에 대한 정보를 풀스캔하여(select*from) 보여줄 경우, 1),2) 방법중 어느방법이 빠를까요?

질문2) 어떤 두명의 선수가 있을때 그 두명의 선수를 비교하려면 1),2) 방법중 어느방법이 빠를까요?

질문3) 위 1),2)방법중 처리속도가 평균적으로 빠른 방법은 무엇일까요?


답변부탁드립니다!

(단순히 row를 줄이고 테이블을 많이쓰냐, 아니면 테이블을 적게쓰고 row를 많이쓰냐...

pdo try catch로 db호출하고있습니다.)


안녕하세요 두둥디님

제가 말씀드리는 내용이 정답은 아니지만 참고하시라 답변드립니다.


질문1,2,3) 모두 퍼포먼스에 대한 질문이신거 같네요. 

퍼포먼스만 보신다면 한개의 조인문이 들어간 1)안이 10개의 조인문이 들어간 2)안 보다는 빠를겁니다.


개인적으론 테이블을 분리한 2)안을 추천 드리고 싶네요.

테이블을 분리한다고 해도 인덱스와 조인문이 최적화가 되어 있다면 1)안과의 차이는 미비할 듯 합니다.

퍼포먼스도 중요하지만 확장성에 대해서도 고려해 보셔야 될거 같아요. 

stat11이 추가가 된다면 1)안 보다는 2)안이 확장성에서는  좀 더 유리할 것이구요.

그리고, 테이블을 분리하면 전체 데이터의 크기가 감소하기에 더 적은 디스크 I/O 로 데이터를 가져 올 수 있습니다.

2016.09.07 01:16:46 반응 이력

답변 작성

질문에 적합한 답변을 상세히 작성해 주시기 바랍니다.

답변이 찬성되면 태그평판 +2점이 적립, 반대되면 태그평판 -1점 차감됩니다.

답변이 채택되면 태그평판 +10점이 적립됩니다.