2010-05-09 3 views
4

저는 웹 사이트 중 하나의 브라우저 기반 RPG에서 작업 중이며 지금은 성능 및 유지 관리를 위해 SQL 테이블을 구성하는 가장 좋은 방법을 결정하려고합니다.MySQL 성능을위한 최적의 테이블 구조 결정

SQL 테이블의 열 수는이 조회 할 수있는 속도에 영향을 미칩니 까 :

여기 내 질문?

나는 PHP 나 MySQL과 관련하여 초보자가 아니다. 나는 그들이 일하도록하는 공통의 목표를 가지고 일들을 개발했지만, 최근에는 기능적 프로그램이 빠르지 않고 신뢰할 만하지 않은 단계로 발전했습니다.

어쨌든 지금은 약 15 열을 가진 members 테이블이 있습니다. 여기에는 플레이어의 사용자 이름, 비밀번호, 이메일, 로그인, 페이지 뷰 등의 정보가 포함됩니다. 그러나 게임에서 플레이어의 진행 상황에 대한 정보는 포함되어 있지 않습니다. 군대 크기, 금, 회전 및 기타 등등과 같은 항목을 추가하면 총 40 또는 50 개의 전체 열로 쉽게 상승 할 수 있습니다.

아, 내 데이터베이스 구조가 정규화되었습니다.

지속적으로 쿼리되는 50 개의 열이있는 테이블은 좋지 않은 아이디어입니까? 그것을 두 개의 테이블로 나누어야합니까? 하나는 사용자의 일반 정보 용이고 다른 하나는 사용자의 게임 통계 용입니다.

내가 직접 쿼리 시간을 확인할 수는 있지만 실제로 테이블을 만들지는 않았으므로 내 게임에 대한 중요한 결정에 대한 전문적인 조언을 더 잘 활용할 수 있다고 생각합니다.

감사합니다. :)

답변

5

테이블 스캔 또는 테이블 데이터의 캐싱 페이지에 의존하는 경우 열 수는 측정 가능한 비용을 가질 수 있습니다. 그러나 최상의 성능을 얻으려면 인덱스을 작성하여 쿼리를 지원하십시오. 쿼리에 도움이되는 인덱스가있는 경우 테이블의 행 너비는 매우 중요하지 않습니다. 테이블을 스캔하는 것보다 훨씬 빠른 방법으로 특정 행을 찾고 있습니다. 여기

당신을 위해 몇 가지 리소스입니다 : 당신의 질문의 끝에 당신의주의를 바탕으로

, 이미 성능을 측정해야한다을 알고 문제가있는 코드 만 수정하면됩니다. 조숙 한 최적화를 시도하지 마십시오.

불행히도, 색인을 정의하기위한 모든 일률적 인 규칙이 없습니다. 최적의 인덱스 세트는 가장 빠른 쿼리가 필요할 때 사용자 정의되도록 설계해야합니다. 힘든 작업으로 많은 분석, 테스트 및 성능 비교 측정이 필요합니다. 또한 주어진 RDBMS 기술이 색인을 사용하는 방법을 이해하려면 많은 읽기가 필요합니다.

+0

저에게 리소스를 제공해 주셔서 감사합니다. 거의 항상 사용자의 ID (기본 키)를 찾기 위해 테이블을 쿼리 할 것이므로 사용자의 응답을 기반으로 많은 열을 가질 수 있어야합니다. 다시 한 번 감사의 말을 전하면서 ​​개발을 진행할 수 있습니다. :) –