728x90
반응형
데이터 타입별 메모리 및 성능 분석
문자열 저장 시, 타입 선택에 따라 저장 공간과 성능이 크게 달라집니다.
- VARCHAR (Latin1): ASCII 중심 데이터에 적합. 가장 빠르고 공간 효율적이나 한글 등 유니코드는 깨질 수 있음.
- NVARCHAR: UCS-2 방식으로 유니코드를 완전 지원하지만, 항상 2바이트 이상 사용하여 공간을 많이 차지함.
- VARCHAR + UTF8 Collation: MSSQL 2019+에서 지원. 가변 길이 저장이 가능하여 공간 효율적이며, 유니코드와 외부 시스템 연동에 강함.
✔️ 정렬, LIKE 검색 성능은 ASCII 기반 VARCHAR가 가장 빠르고, NVARCHAR는 느린 편. UTF-8은 중간 정도 성능을 보임.
JSON 처리 방식
- MySQL
- JSON 타입을 직접 지원함 (
CREATE TABLE users (data JSON)
가능). JSON_EXTRACT
,JSON_SET
,>
,>>
등의 함수 제공.- JSON 컬럼에 인덱스는 전체가 아닌 Virtual Column으로 일부 가능.
- JSON 타입을 직접 지원함 (
- MSSQL
- JSON을 문자열(
NVARCHAR
)로 저장. JSON_VALUE
,OPENJSON
,ISJSON
,FOR JSON
등을 통해 JSON 분석 및 생성 가능.- JSON 필드 내 검색 시
WHERE ISJSON(json_col) = 1 AND JSON_VALUE(json_col, '$.name') = '홍길동'
등의 형태 사용.
- JSON을 문자열(
-- MySQL
SELECT JSON_EXTRACT(json_col, '$.name') FROM table;
-- MSSQL
SELECT JSON_VALUE(json_col, '$.name') FROM table;
윈도우 함수 사용
윈도우 함수는 집계 함수(AVG, COUNT, RANK 등)를 그룹별로 수행하면서도 행별 데이터도 함께 반환할 수 있어, 분석 쿼리에 유용합니다.
- MSSQL
- 오래전부터 완전한 윈도우 함수 지원.
PARTITION BY
,ORDER BY
,ROWS BETWEEN
등 풍부한 문법 제공.
- MySQL
- 8.0 이상에서 윈도우 함수 정식 지원.
- MSSQL과 유사한 문법 사용 가능.
SELECT
name,
RANK() OVER (PARTITION BY department ORDER BY score DESC) AS rank_by_dept
FROM TestResults;
✔️ 성능은 데이터 양과 인덱스 설계에 따라 좌우되며, 분석용 쿼리에 매우 유용합니다.
728x90
반응형
'Database' 카테고리의 다른 글
[MSSQL] MSSQL과 MySQL의 트랜잭션, 프로시저, 트리거 기능 차이 (0) | 2025.05.26 |
---|---|
[MSSQL] MSSQL 문자열 타입 (0) | 2025.05.26 |
[MSSQL] MSSQL과 MySQL의 문법 및 기능 비교 (0) | 2025.05.26 |
댓글