2012-12-08 9 views
-1

더 많은 열이있는 테이블을 더 적게 사용하거나 적은 수의 열을 가진 테이블을 더 갖고 계십시오. 예를 들어테이블이 더 많은 행, 더 많은 열 또는 더 많은 테이블을 디자인합니까?

시간 그냥 날 (즉. 1-24)의 시간을 의미 나는 열 날짜, 시간, 시장에있는 하나 개의 테이블, 가격이 있다고 할 수 있습니다. 마켓은 DAM 또는 RTM의 세 문자 코드입니다. 가격은 중요한 가치입니다.

테이블 하나가 시장이 DAM이고 다른 테이블이 RTM 인 하위 열이 세 열만있는 두 개의 테이블을 대신 사용하는 것이 더 좋습니까?

또 다른 아이디어는 날짜, 시간, DAMPrice, RTMPrice로 테이블을 만드는 것입니다. 이 방법을 사용하면 대부분의 셀렉트가 더 간단 할 것입니다.

가장 많이 사용되는 SELECT는 동일한 테이블에서 조인과 함께 작동하는 RTMPrice의 DAMPrice와 다른 점을 사용합니다.

+0

나중에 시장을 추가 할 가능성이있는 경우, 시장을 열 또는 테이블 이름이 아닌 테이블에 데이터로 저장해야합니다. 그러나 시장 이름 (및 시장 ID)과 데이터 (날짜, 시간, Market_id, 가격)에 대해 하나씩 두 개의 테이블을 사용했습니다. 그런 다음 시장 테이블에 행 하나를 추가하여 다른 행을 추가 할 수 있습니다. –

+0

더 많은 시장을 추가 할 가능성이 없다면 여전히 이것을하는 것이 더 낫습니다. 그렇지 않으면 각 시장에 대해 별도의 열을 사용하는 것이 더 낫습니다. –

+0

별도의 rtable. 시장 별 필터링은 기본적으로 문자열 비교 대신 nubmer 비교이기 때문에 더 빠릅니다. 나는 또한 날짜 + 시간이 별도의 열이어야한다고 생각하지 않습니다. – TomTom

답변

1

디자인 측면에서 보면 중복을 줄이기 위해 데이터를 표준화하는 것이 일반적입니다. 일반적으로 더 적은 수의 열이있는 더 많은 테이블을 의미합니다.

그러나 실제로는 조인 작업의 수를 최소화하면 더 나은 성능을 얻을 수 있습니다. 따라서 읽기 속도를 높이려면 중복 된 데이터를 사용하는 것이 좋습니다. 이 경우 더 많은 열이있는 테이블 수가 줄어 듭니다.

더 나은 디자인을 먼저 선택한 다음 필요한 경우 나중에 성능을 위해 최적화하는 것이 좋습니다.

+0

* 그러나 실제적으로 조인 작업의 수를 최소화하면 더 나은 성능을 얻을 수 있습니다. * 물론 일부 속성의 고유 값이 필요한 경우가 아니면. 그러면 훨씬 느려집니다. –