본문 바로가기
Database

[MSSQL] MSSQL과 MySQL의 성능과 효율성

by JINJINC 2025. 5. 26.
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으로 일부 가능.
  • MSSQL
    • JSON을 문자열(NVARCHAR)로 저장.
    • JSON_VALUE, OPENJSON, ISJSON, FOR JSON 등을 통해 JSON 분석 및 생성 가능.
    • JSON 필드 내 검색 시 WHERE ISJSON(json_col) = 1 AND JSON_VALUE(json_col, '$.name') = '홍길동' 등의 형태 사용.
-- 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
반응형

댓글