15 개의 시험 점수를 저장해야하는 학생 추적 프로그램을 개발 중입니다.
산술 연산 수행과 같은 목적으로 마크를 문자열로 저장하고 필요할 때 분할 할 수 있습니다. 그러나 가능한 한 많은 성능이 필요합니다.
어떤게 더 좋아? 단일 문자열 필드 또는 15 개의 개별 int 필드?
15 개의 시험 점수를 저장해야하는 학생 추적 프로그램을 개발 중입니다.
산술 연산 수행과 같은 목적으로 마크를 문자열로 저장하고 필요할 때 분할 할 수 있습니다. 그러나 가능한 한 많은 성능이 필요합니다.
어떤게 더 좋아? 단일 문자열 필드 또는 15 개의 개별 int 필드?
답변:
이미 분할 및 컴퓨팅에 대해 이야기하고 있다면 이것을 배열로 저장 하지 마십시오 .
관계 이론과 전통적인 정규화 규칙 및 교리에 관계없이 최소한의 유연성을 제공하는 디자인입니다.
각 시험 결과를 한 줄로 만드십시오.
나는 모든 것을 예상하려고하지는 않지만 이보다 세분화되고 (정상화 된) 매우 많은 공간이 필요합니다. 비싼 디자인으로 인해 현재 필요하거나 필요하지 않을 수도 있습니다. 앞으로 필요하지 않을 수도 있습니다 :
최고와 최저 결과를 버리고? 배열을 슬라이스하고 정렬해야합니다.
평균? 당신은 그것을 슬라이스하고 총을해야합니다
학생들의 시험에 의한 시험 결과 분석? 당신은 슬라이스하고 피벗해야합니다
계산을 위해 정렬 (또는 영국 GCSE, 7 As 및 2B 위치)? 당신은 슬라이스하고 정렬해야합니다
이 모든 슬라이싱 및 정렬은 인덱스 화 된 정규화 된 디자인에서 매우 저렴합니다.
성과 측면에서 점수가 좋은 승자는 다음과 같이 수치 적으로 저장합니다.
create table test_scores
(
student_id int,
test_id int,
score int
);
쿼리, 업데이트 및 추가가 쉽고 집계를 매우 쉽고 빠르게 수행 할 수 있습니다. "이 정보를 분리해야하는 문자열로 저장"또는 "열에 저장"을 선택하면 RDBMS에서 대부분의 유스 케이스에서 거의 항상 "열에 저장"이됩니다.
char (15) 또는 15 tinyint를 사용하여 tiny int (0 ~ 255)를 사용하는 한 동일합니다 (크기가 현명합니다). 따라서 성능 관점에서 추출 및 문자열 처리를 절약하므로 15 개의 tinyint를 사용하십시오.
최신 정보
표시가 두 자리 숫자 인 경우 CHAR (30)이 필요하며 이는 tinyint의 15 배 크기의 두 배입니다.