2014-05-13 2 views
0

사람들 추적을위한 MySql 데이터베이스가 있습니다. 각 상위 레코드에 대한 상위 테이블과 각 하위 레코드에 대한 하위 테이블이 있습니다.MySql 테이블 구조/성능

부모 테이블에 total_children 필드가있을 수 있지만 그 답을 얻으려면 내가 찾고있는 부모 레코드의 parent_id가 몇 개인 레코드인지 간단히 계산할 수 있습니다. 나는 중복 된 데이터를 유지하는 것을 싫어하지만,이 로그가 두 번 기록되는 특정 작업에 대해서는 특정 작업 (매번 하위 테이블에 액세스하지 않아도 됨) 중에 성능 이점이 될 수 있습니다.

이것은 아주 간단한 예이지만, 더 큰 그림으로 묻습니다. 나는 좋은 크기의 데이터베이스 (여러 테이블에 10,000+ 레코드가있는 25 개 이상의 테이블)를 보유하고 있습니다. 좀 더 복잡한 select 문을 실행하여 동일한 정보를 얻을 수있을 때 다른 테이블에 이러한 레코드를 보관하는 것이 일반적인 방법입니까?

+0

각각 10.000 개의 레코드가있는 테이블은 매우 작은 데이터베이스입니다. 100.000은 매우 작은 데이터베이스입니다. 1.000.000 - 단지 작은 데이터베이스. 그리고 각 테이블에 10.000.000 개의 레코드가있는 경우에도 여전히 큰 데이터베이스가 아닌 평균입니다. 그리고 "매우 큰"것은 아닙니다. 따라서 조기 최적화를 시도하지 마십시오. 항상 문제를 일으 킵니다. 더 나은 접근 : 두 개의 구조를 만들고 질문으로 배치하십시오. 그게 나를 분석하고 대답하기가 훨씬 쉬워 질 것입니다. –

+0

데이터베이스가 지나치게 인상적이거나 크지 않다는 것을 이해합니다. 위에서 설명한 것이 표준 이었는지 궁금합니다. 회사를위한 웹 응용 프로그램을 만드는 과정에 있으며 최적화 된 설정으로 시작하고 싶습니다. 길 아래로 수정하지 않아도됩니다. – user2843198

+0

현재 구조 설명이 모호합니다. 당신의 딜레마는 고전적입니다 : _consistency_ 대 _accessibility_ 내가 지금 볼 수 있습니다. –

답변

1

당신이 묻는 것은 denormalization입니다. 기본적으로 체계적으로 Normal Form 규칙을 위반하는 프로세스입니다.

영향을 이해할 때이 작업을 수행하는 것이 좋으며 일반적인 관행입니다.