2013-02-28 11 views
0

실제로 저는 교육 기관용 소프트웨어를 제작 중이므로 몇 가지 질문에 대한 답을 알고 싶었습니다 :더 많은 테이블 또는 더 많은 행이 sql에서 더 좋습니까?

아시겠지만 몇 가지 새로운 데이터가 매년 생성됩니다 (신규 입학). 일부는 업그레이드 될 것입니다 . 그래서 나는 ac_year와 같은 칼럼처럼 학년 분리를 사용하여 하나의 테이블에 모든 데이터를 저장해야한다. 그렇지 않으면 해마다 별도의 테이블을 만들어야한다. 또한 학생들에 관한 수업, 표시, 요금, 호스텔 등과 같은 정보를 저장하는 테이블이 있습니다. 그래서 요금 등의 각 정보는 열로 올해 ... 요금 2010 요금 2011 요금-2012과 같은 다른 테이블에

또는 1 개 단일 요금 테이블에

저장 될 것입니다.

1 ~ 2 년 후에 데이터베이스가 더 무거워 져서 단일 테이블에서 1 년 동안 데이터를 백업 할 수 있습니다 (연도가 열과 마찬가지로)?

그리고 마음의 SQL 서버에 그것은 시간 제약에 따라 여러 테이블의 데이터를 저장하는 일반적인 아니라 2005 년

감사

+0

더 자세히 설명해주세요. 당신은 어떤 노력을했는지 보여줄 필요가 있습니다. 그렇지 않으면 질문을 편집하십시오. 아무도 도와 드릴 수 없을 것입니다. – DevelopmentIsMyPassion

+0

모든 테이블에'ac_year' 열을 추가하십시오. 일년에 한 번 테이블의 다른 버전은 유지 보수의 악몽이며, 나중에 데이터를 쿼리하는 것을 대단히 복잡하게 만듭니다. – Lamak

+0

그래도 한 가지 더 있습니다. 모든 정보를 단일 테이블에 저장하면 몇 년 후에 데이터베이스가됩니다. 무거운. 그러면 테이블에서 1 년간의 데이터 만 백업 할 수 있습니다. 또한 나중에 테이블의 데이터를 별도의 (백업 및 삭제) 할 수 있습니다. – user2106652

답변

1

유지에 답변 해주세요. 나는 그것을 하나의 테이블에 모두 저장하는 것을 선호합니다. 앞으로는 오래된 데이터를 보관할 수도 있지만 성능이 문제가되기까지는 아직 상당한 시간이 걸릴 것입니다.

+1

일반적으로 파티셔닝 된 테이블을 만드는 시간에 따라 결과를 세분화해야하는 경우 (SQL 2005의 Enterprise에서만 실제 파티셔닝을 사용할 수 있음). 파티셔닝은 성능을 크게 향상시킬 수 있지만 처리해야 할 행 수가 많지 않으면 실제로는 필요하지 않습니다. 입학을 위해서는 아마 필요하지 않습니다 (아마 텍사스에있는 모든 학교를 한꺼번에 입학하지 않는 한). –

+0

:) 예.하지만 실제로 다른 네트워크 클라이언트에서 사용할 수 있도록 데이터베이스의 학생 이미지를 저장하는 것입니다. – user2106652

1

모든 속성마다 새 엔터티를 만드는 것보다 항상 엔터티에 새 속성을 추가하는 것이 좋습니다. 이렇게하면 유지 관리 및 쿼리가 훨씬 쉬워집니다. 쿼리의 성능 측면에서 데이터 및 데이터베이스의 내부 문제에 대해 걱정할 필요가 없습니다. 실제 성능 문제가 발생하면 상황에 따라 수년간의 색인 생성과 같은 많은 솔루션이 있습니다.

2

질문을 표현할 때 대답은 분명히 연도 (또는 날짜 또는 기타 정보)를 열로 한 테이블에 데이터를 저장하는 것입니다. 이것은 단순히 옳은 일입니다. 당신은 시간이 지남에 따라 같은 주체를 다루고 있습니다.

필드가 1 년에서 다음 연도로 크게 변경되는 경우는 예외입니다. 나는 그것이 당신의 식탁의 경우라고 생각하지 않습니다.

데이터베이스가 실제로 커지면 시간별로 테이블을 파티션 할 수 있습니다. 각 파티션은 1 년간의 데이터입니다. 이렇게하면 1 년치 만 액세스하면되는 쿼리 속도가 빨라집니다. 또한 데이터 백업 및 복원에 도움이됩니다. 이것은 궁극적으로 찾고있는 해결책 일 수 있습니다.

"실제로 커지고있다"는 것은 적어도 수백만 개의 행을 의미합니다. 테이블에 2 백만 행이 있더라도 대부분의 쿼리는 알맞은 하드웨어에서 적절한 인덱스를 사용하여 정상적으로 실행됩니다.

관련 문제