홈>
열보다 많은 행을 정의하거나 그 반대로 성능을 저하 시키는가?
다음 상황을 고려하십시오. 상점, 음식, 가격 및 날짜가 있습니다
테이블 정의 :
method 1
PriceDate nchar(10)
FoodID int
FoodPrice int
테이블 정의 :
method 2
PriceDate nchar(10) , Food_1_Price int, Food_2_Price int... Food_N_Price int
- 답변 # 1
- 답변 # 2
SQL 데이터베이스는 데이터 집합에서 작동합니다. 추가 열에 동일한 수준의 세부 정보를 포함하지않아야합니다 (
method 2
). ). 이렇게하면 디자인을 생성 할 때까지 열 수를 제한하고 쿼리를 불필요하게 복잡하게 만듭니다.와이즈 비즈 새로운
Method 1
를 추가 할 수 있다는 점에서 훨씬 확장 가능합니다. 스키마 또는 데이터 분석 검색어를 변경하지 않고도 유형을 지정할 수 있습니다.Food
관련 자료
- XML 데이터를 HSQLDB 테이블 열에 문자열 형식으로 저장하는 방법
- wordpress - 사용자 테이블의 사용자 정의 날짜 열이 정렬되지 않음
- R/Shiny Select DataFrom 데이터 테이블의 열
- microsoft excel - 인덱스 배열의 범위로 테이블 열 이름을 사용 하시겠습니까?
- python - csv 테이블 스택을 한 열로
- sql - 동일한 테이블 내에서 특정 열을 업데이트하고 제한을 추가합니다PostgreSQL
- mysql - 2 개의 테이블을 결합하고 첫 번째 테이블을 datagridview의 열 머리글로 추가 한 다음 두 번째 테이블을 열 머리글 아래의 행으로 추가합니다
- c# - sql - 조인 된 테이블에서 열 검색
- laravel - 동일한 열에 여러 ID가있는 테이블을 어떻게 조인합니까?
- sql - 해당 열에 다른 값이없는 경우에만 테이블 열 업데이트
- javascript - 입력 상자가 여러 개인 2 열 테이블을 만드는 방법
- r - 열 이름이 다른 dbWriteTable 일 때 SQLite 테이블에 데이터 프레임을 삽입 할 수 없습니다
- javascript - image_id가 order_id와 같으면 테이블 열에 이미지 표시
- 테이블에 열만 추가 할 수 있습니까? (오라클 SQL)
- php - Laravel의 테이블 열에서 값의 합계를 얻는 방법
- sql - 조인 된 테이블에서 단일 테이블의 모든 열을 선택하는 방법은 무엇입니까?
- html - 사용자 테이블 열을 편집 했으므로 Stripe/Cashier가 작동하지 않습니다! 어떤 아이디어?
- sql server - 자신의 테이블에서 object_id를 참조하는 열 사용
- sql - 자동 증가없이 증가 열이있는 테이블에 행 삽입
- sql server - MS SQL의 기존 테이블에 Null 허용 열을 추가 할 수 있습니까?
관련 질문
- 예약 없이 모든 환자를 확보하는 SQL 문 [중복]
- mysql : 매개변수에서 쉼표로 구분된 값을 비교하여 해당 값을 기반으로 ID를 가져옵니다.
- SQL Server 데이터베이스에 대한 프론트엔드를 생성하려면 어떻게 해야 합니까?
- Power BI Desktop에서 SQL 데이터베이스 쿼리에 대해 Order By를 사용할 때 SQL 오류
- SQL Server에서 복잡한 외래 키의 일부로 관련 테이블의 필드를 사용할 수 있습니까?
- SQL Server DB에 이전/새 데이터 원본 통합
- 동일한 테이블의 데이터로 SQL 업데이트
- SQL Server : 반복할 쿼리
- 하나의 PHP 파일에서 여러 쿼리 사용 이전 쿼리의 결과 집합
- sql : (대량 삽입) 쿼리가 성공적으로 실행되었지만 select 문에서 결과/레code가 반환되지 않음
방법 1은 데이터베이스에 데이터를 저장하는 전통적인 방법입니다. 많은 장점이 있습니다. 특히 유연성과 쿼리 기능.
방법 2는 여러 가지 이유로 권장하지 않습니다 :
'가격'열의 수는 고정되어 있으므로 변경하려면 테이블 구조를 변경해야합니다.
다른 가격의 수를 계산하는 것은 고통 스럽습니다.
가격을 제거하는 것은 고통 스럽습니다.
새로운 가격을 추가하는 것은 고통 스럽습니다.
또한 각 행은 값이 없더라도 정수로 예약 된 (일반적으로) 4 바이트를 차지합니다.
모든 값을 채운 경우 (또는 대부분), 두 번째 방법은 실제로 첫 번째 방법보다 적은 공간을 차지합니다. 일반적으로
NULL
에 공간이 사용되지 않기 때문에 열이 가변 길이 문자열 인 경우에는 더 극적입니다. 문자열.일부 상황에서는 방법 2가 바람직 할 수 있습니다.
JSON 및 XML과 같은 SQL Server에 목록을 저장하는 대체 방법이 있다는 점에 유의해야합니다. 상황에 따라 가변 길이 컨텐츠를 저장하는 좋은 방법이 될 수 있습니다. SQL Server는 배열을 지원하지 않지만 그렇게하는 데이터베이스에서는 이것이 또 다른 합리적인 대안입니다.
그러나 방법 1은 거의 기본 방법이며 대체 표현을 선택하면 개선 사항을 보여주고 싶을 것입니다.