동일한 구조이지만 내용이 다른 세 개의 테이블을 만들거나 데이터를 모두 포함하는 하나의 테이블과 데이터를 구별하는 추가 열을 만들 수 있습니다. 각 테이블에는 약 10,000 개의 행이 있으며 데이터를 찾는 데 독점적으로 사용됩니다. 핵심 설계 기준은 검색 속도입니다. 따라서 더 빠릅니다 : 각각 10K 행 3 개의 테이블 또는 30K 행 1 개의 테이블 또는 실제로 차이가 있습니까? 참고 : 쿼리 매개 변수로 사용될 모든 열에는 인덱스가 있습니다.3 개의 SQL 테이블 또는 하나?
답변
현대적인 RDBMS에서는 조회 시간면에서 10k 또는 30k 행간에 큰 차이가 없어야합니다. 어떤 경우에는 정규화를 보증하기에 충분하지 않은 차이가 있습니다. 인덱싱 된 한정자 열은 이러한 디자인에 대한 일반적인 접근 방식입니다.
업데이트 패턴이 "짧은"표 (예 : 소셜 네트워크의 오늘 메시지)에 넣을 수있는 제한된 데이터 세트에 영향을주는 경우에만 역 정규화를 고려할 수 있습니다. 삽입/업데이트 및 안정화 된 업데이트를 대형 인덱스 테이블로 전송하는 백그라운드 프로세스가 있습니다. 이 사건은 당신이 실제로 작전을하는 동안 을 얻는 것이 었습니다. 매우 특별하고 불행한 요구 사항이 있지만,은 극적 일 것입니다. RDBMS 엔진은 대부분의 간단한 시나리오를 매우 효율적으로 처리 할만큼 정교합니다. 30k 또는 행이 후보자로 들리지 않습니다.
여전히 의심스러운 경우 특정 데이터베이스/시스템 설정을 확인하는 테스트를 작성하는 것은 매우 쉽습니다. 실제 데이터로 여기에 결과를 게시하면 모든 단계에서 유용한 정보가 될 것입니다.
테이블은 분기마다 완전히 재생성되며 앞으로 읽기 전용으로 처리되므로 쿼리 속도에만 관심이 있습니다. 업데이트는 문제가 아닙니다. –
표는 아직 존재하지 않지만 일단 표를 작성하면 제안대로 몇 가지 테스트를 실행하고 결과를 게시합니다. –
다른 포스터가 적용하고 동의 한 속도 문제 이외에도 솔루션의 유지 관리 비용에 영향을 줄 수 있으므로 데이터베이스에서 복제하는 비즈니스 모델을 고려해야합니다.
'3 가지'가 4로 변할 수 있고 별도의 테이블 경로를 선택한 경우 다른 테이블을 추가해야합니다. 반면에 discriminator 경로를 선택하면 새로운 discriminator를 사용하는 것처럼 간단합니다.
그러나 discriminator 경로를 선택하면 'things'중 하나에 저장할 데이터가 더 있어야한다는 새로운 요구 사항이 생기면 테이블에 다른 항목과 관련이없는 추가 열을 추가해야합니다 '.
귀하의 비즈니스 모델을 알기 때문에 어느 것이 올바른 방향인지 말할 수 없습니다.
- 1. 3 개의 테이블 조인 SQL
- 2. 오라클은 하나 개의 테이블
- 3. DB 구조 : 두 개의 테이블 또는 하나?
- 4. 하나 개의 테이블
- 5. 동일한 열이있는 두 개의 테이블 또는 추가 열이있는 테이블 하나?
- 6. 각 사용자는 하나 개의 테이블
- 7. SQL/PHP에서 3 개의 테이블 조인
- 8. SQL : 3 개의 테이블 중에서 선택
- 9. 하나 대신 3 개의 알림
- 10. 하나의 큰 SQL 테이블 또는 여러 개의 작은 SQL 테이블?
- 11. linq 3 테이블 또는 조건
- 12. 테이블 하나 또는 여러 개?
- 13. 하나 또는 두 개의 managedObjectContext
- 14. 가장 좋은 방법은 하나 개의 테이블
- 15. 50/50 삽입 및 선택. 두 개의 테이블 또는 하나 개의 테이블
- 16. 데이터베이스; 하나 또는 두 개의 고유 필드?
- 17. SQL 테이블 - 하나 또는 그 이상의 데이터 패턴
- 18. SQL - 두 개의 테이블
- 19. SQL 서버 2008-3 테이블
- 20. 검색 하나 또는 모든
- 21. 하나의 배열에 3 개의 테이블
- 22. 가입 3 개 테이블 - SQL
- 23. SQL 쿼리 3 개 테이블
- 24. 내가 두 테이블을 하나 개의 테이블
- 25. 하나 또는 여러 배열 값으로 테이블 쿼리
- 26. SQL 3 개의 테이블로 결합하기
- 27. 동일한 창에서 3 개의 테이블, iPad
- 28. 여러 필드에 3 개의 테이블 조인 - SQL Server
- 29. SQL SELECT 3 개 테이블
- 30. SQL 테이블 3 개를 결합하십시오.
더 많은 정보가 유용 할 수 있지만 세 가지 유형의 데이터가있는 경우 나에게 소리가 들리면 세 가지 다른 표가 나타납니다. – Marvo
세 데이터 소스의 모든 열이 동일합니다. –
* PARTITIONING *은 DB에서 지원하는 유용한 개념 (예 : Postgres)을 제공합니다. 이런 소리가 당신 상황 일 수 있습니다. –