특정 열(column) 또는 필드(field)의 데이터에서 고유한 값들의 개수를 의미합니다. 카디널리티는 고유한 값들이 얼마나 많이 있는지, 즉 데이터의 분포가 어떠한지를 나타내는 중요한 척도입니다.
예를 들어, "성별"이라는 열이 있을 때 이 열의 카디널리티는 2일 수 있습니다("남성"과 "여성" 두 가지 고유한 값이 있기 때문에). 반면에, "사용자 ID"라는 열은 각 사용자 ID가 고유하기 때문에 카디널리티가 더 높을 것입니다.
카디널리티는 데이터베이스의 쿼리 성능과 밀접하게 관련되어 있습니다. 일반적으로, 카디널리티가 높은 열에 인덱스를 사용하면 쿼리 성능이 향상될 수 있습니다. 왜냐하면 인덱스는 고유한 값이 많을 때 더 잘 작동하기 때문입니다. 반면에, 카디널리티가 낮은 열(즉, 값이 매우 제한적인 열)에 인덱스를 사용하면 쿼리 성능 향상이 별로 없을 수 있습니다. 이는 인덱스가 해당 열의 고유한 값들을 빠르게 찾아낼 수 있지만, 값이 매우 제한적이라면 데이터베이스는 그 어떤 값이든지 빠르게 찾아낼 수 있기 때문입니다.
char와 varchar는 데이터베이스에서 문자열 데이터를 저장하는 데 사용되는 데이터 타입입니다.
'char(10)'이라고 지정된 필드에는 최대 10자의 문자만 저장할 수 있습니다. 그래서 'aaaaaaaaaaaaaaa'라는 15자의 문자열을 'char(10)' 필드에 저장하려고 하면, 문자열의 첫 10자만 저장되고 나머지 문자는 잘립니다. 이는 varchar에서도 마찬가지 입니다.
char는 고정 길이의 문자열을 저장하는 데 사용됩니다. 예를 들어, char(10)으로 정의된 경우 해당 컬럼에 저장될 수 있는 문자열은 항상 10자리여야 합니다. 만약 저장하려는 문자열이 10자리보다 짧으면, 나머지 공간은 공백으로 채워집니다. 이와 같이 데이터 크기가 고정되어 있기 때문에, 검색 속도가 빠르고 데이터 저장 크기도 상대적으로 작습니다.
반면에 varchar는 가변 길이의 문자열을 저장하는 데 사용됩니다. (VARCHAR 타입은 저장되는 데이터의 길이 정보를 추가로 저장해야 합니다.) 예를 들어, varchar(10)으로 정의된 경우 해당 컬럼에 저장될 수 있는 문자열의 길이는 최대 10자리까지 가능하며, 실제 저장되는 문자열의 길이에 따라 공간이 동적으로 할당됩니다.