2011-03-11 4 views
5

데이터로 채워진 M 행렬이있는 경우 빠른 쿼리를 위해 SQL 테이블에 저장하는 가장 좋은 방법은 무엇입니까? 3 열 테이블 (X, Y, Z) 총 MN 행을 저장하거나 N 열로 간단히 M 행을 저장할 수 있습니다. N은 수백에서 수천의 순서이며, M은 훨씬 더 클 수 있습니다. 쿼리가 알려진 열 이름을 기반으로 빌드 될 수 있기 때문에 두 번째 방법은 쿼리에 더 빠르다고 생각합니다. 그러나 테이블에 여러 개의 열을 배치하는 것이 좋습니다. 덕분에SQL 테이블에 M by N 행렬을 저장하는 권장 방법은 무엇입니까

답변

7

두 번째 옵션 (N 개의 열)은 컴파일 타임에 알 수없는 열의 값을 선택하는 것을 어렵게 만듭니다. 선택을 생성하는 데는 역동적 인 힘이 필요합니다. 그래서 나는 테이블 (X, Y, 값)을 가지고 (x, y)를 기본 키로 만들 것입니다.

+0

동의합니다 - 하나의 테이블, X, Y 및 값이 가장 깨끗한 방법입니다. 이것은 N 차원으로 쉽게 확장 될 수 있습니다. –

2

테이블이 모든 RDBMS에 가질 수있는 최대 열 수에 제한이 있습니다. 예를 들어, SQL Server 2008은 비 와이드 테이블의 경우 최대 1.024 열을, 넓은 테이블의 경우 최대 30.000 열을 갖습니다. Oracle은 1.000 열 최대 값을 갖습니다 (해당 제한이 변경되는지는 확실하지 않지만). 따라서 첫 번째 옵션을 권하고 싶습니다. 실제로 열 제한이 없어도이 옵션을 선택했을 것입니다.

관련 문제