몇 년 전에 학습 프로젝트로 게임을위한 통계 사이트를 개발했습니다. 그것은 오늘도 여전히 사용되고 있으며 조금 정리해야합니다.MySQL의 필드가 너무 많습니까?
데이터베이스는 개선이 필요한 영역입니다. GameID, PlayerID, Kills, Deaths, DamageDealt, DamageTaken 등이있는 게임 통계를위한 테이블이 있습니다. 전체적으로 약 50 개의 필드가 하나의 테이블에 있고 앞으로 더 추가 될 수있는 테이블이 많이 있습니다. 어느 시점에 필드가 너무 많습니까? 현재 57,341 개의 행을 가지고 있으며 그 자체로 153.6 MiB입니다.
또한 동일한 테이블의 BLOB에 배열을 저장하는 몇 가지 필드가 있습니다. 배열의 예는 Player vs Player matchups입니다. 배열은 플레이어가 게임에서 다른 플레이어를 몇 번 죽였는지를 저장합니다. 이것은 파일 크기가 더 큰 필드입니다. BLOB에 배열을 저장하는 것이 좋습니다.
[Killed] => Array
(
[SomeDude] => 13
[GameGuy] => 10
[AnotherPlayer] => 8
[YetAnother] => 7
[BestPlayer] => 3
[APlayer] => 9
[WorstPlayer] => 2
)
이 10 명 이상의 플레이어를 초과하지 않는 경향이
배열처럼 보인다.
EAV 또는 [Entity-Attribute-Value] (http://en.wikipedia.org/wiki/Entity-attribute-value_model)라고합니다. – Triztian
아! 고마워 ... 내 대답을 편집 할게. –
통계 요약표로, 나는 "앞으로 나아갈 것"이라는 역동적 인 것이 없다고 추측하고, 미래에 추가하고 싶은 열의 수가 제한되어 있다고 생각합니다. 또한 모든 플레이어가 모든 열을 사용하게 될 것입니다. 따라서 EAV의 모든 유연성은 필요하지 않습니다. EAV가이 상황에서 쉽게 작동 할 수 있다고 동의합니다. – Prescott