DB/MySQL 6

[MySQL] DETERMINISTIC vs NOT DETEMINISTIC

🔹 의미DETERMINISTIC = “같은 입력값에 대해서 항상 같은 결과를 반환한다”CREATE FUNCTION double_value(x INT)RETURNS INTDETERMINISTICBEGIN RETURN x * 2;END;NOT DETERMINISTIC = “같은 입력값이라도 상황(시간, 환경 등)에 따라 결과가 달라질 수 있다”CREATE FUNCTION random_value()RETURNS DOUBLENOT DETERMINISTICBEGIN RETURN RAND();END;두 함수가 동일한 동작을 해도 함수 호출 시에 호출 횟수 등에 차이가 발생할 수 있다.→ 이전에 계산된 값을 재사용할 수 있다면 굳이 함수를 다시 호출할 필요가 없기 때문이다.인덱스 사용 시 DETERMIN..

DB/MySQL 2025.10.11

[MySQL] VARCHAR vs TEXT

해당 내용은 인프런 Real MySQL 시즌1 - PART 1 강의를 참고하여 작성한 것입니다.공통점문자열 속성 값을 저장최대 65,535 Bytes까지 저장 가능차이점VARCHAR 타입 컬럼에는 지정된 글자 수만큼만 데이터 저장 가능VARCHAR(10) → 10글자 이하만 저장 가능TEXT 타입 컬럼은 인덱스 생성 시 반드시 Prefix 길이 지정 필요CREATE INDEX ix_text_column on table(text_column(100));위와 같이 사용하면 앞의 100글자까지만 인덱스로 사용하겠다는 뜻지정하지 않으면 에러 발생TEXT 타입 컬럼은 표현식으로만 디폴트 값 지정 가능CREATE TABLE tb1 (col TEXT DEFAULT ‘abc’) → 에러 발생CREATE TABLE tb..

DB/MySQL 2025.10.11

[MySQL] CHAR vs VARCHAR 타입 선정

해당 내용은 인프런 Real MySQL 시즌1 - PART 1 강의를 참고하여 작성한 것입니다. 공통점문자열 저장용 컬럼최대 저장 가능 문자 길이 명시바이트 수 X → CHAR(10)이면 문자 종류 관계없이 10글자차이점값의 실제 크기에 관계없이 고정된 공간 할당 여부최대 저장 길이 : CHAR(255) vs VARCHAR(16383) → (65535바이트)저장된 값의 길이 관리 여부 (VARCHAR와 가변 길이 문자셋 사용하는 CHAR는 저장된 값 길이 관리)0~255 bytes → length-bytes : 1256~65535 bytes → legnth-bytes : 2저장 방식Latin1CHAR(10)4바이트를 넣으면 6바이트를 공백으로 관리한다.VARCHAR(10)4바이트를 넣으면 길이 저장용 1..

DB/MySQL 2025.10.11

[MySQL] Spatial Query Index 최적화(공간 쿼리 최적화)

🤔 문제의식개발을 하다 보니 좌표를 사용하는 경우가 꽤 있었다.필자의 경우 대다수의 상황을 프론트가 지도를 연동하는 과정 속에 대부분 String으로 좌표값만 저장 후 전달해 주었던 것 같다.새로운 프로젝트에서 사용자 위치 기반으로 가게를 거리별로 페이징 해주어야하는 부분이 있었고, 직접 처리해보고자 하였다.String으로 처리하고자 하니 인덱싱이 되지 않는 문제가 있었다. 사용자의 위치를 기반으로 일정한 거리를 계산하고자 하니 풀 테이블 스캔이 필연적으로 발생하는 문제였다.→ 프로젝트 규모상 위도 경도를 일정 범위로 제한한 뒤에 다시 원형으로 거리를 측정하는 방식을 도입하는 것만으로도 충분했지만 더 좋은 정보가 없나 찾아보았고 Spatial Query라는 것을 알게 되었다.💡Spatial Query..

DB/MySQL 2025.08.31

[MySQL] DATE 자료형 정리

MySQL의 날짜 시간 타입 Mysql에는 시간에 대한 다양한 자료형이 있다. 대표적으로 TIMESTAMP , DATE , DATETIME 같은 것들이 있다. JAVA를 주로 사용하는 나를 기준으로 하자면 LocadDate -> DATE, LocalDateTime -> DATETIME 로 바뀌게 된다. 그렇다면 각자 무엇을 어떻게 나타내주는 것인지 알아보자.DATE 와 DATETIME주로 사용되는 자료형이다. 둘 다 타입명 자체에서 알 수 있듯이 날짜와 날짜+시간을 저장하기 위한 타입이다. DATE : 'YYYY-MM-DD' 포맷으로 표현되고, DATETIME : 'YYYY-MM-DD hh:mm:ss' 의 포맷으로 표현된다.이 때 구분자는 다른 구두점으로도 변경 가능하나 주의를 하며 변경해야한다.DAT..

DB/MySQL 2024.11.20

[MySQL] 날짜, 시간 표기 방식 DATE_FORMAT()

MySQL DATE_FORMAT 활용MySQL은 DATE, DATETIME, TIMESTAMP 같은 다양한 시간 자료형을 지원합니다. 하지만 SQL문으로 출력할 때 원하는 형식이 아닐 수 있습니다. 예를 들어, DATETIME 자료형에서 시간을 제외하고 출력하려면 어떻게 해야 할까요?이 글을 참고하면 문제를 해결하기 위해 DATE_FORMAT을 사용하는 것을 볼 수 있습니다. 이제 DATE_FORMAT을 사용하는 다양한 방법을 알아봅시다.지시자설명%a요일 이름 축약형 (일..토)%b월 이름 축약형 (1월..12월)%c월 숫자형 (0..12)%D날짜에 영어 접미사 추가 (0th, 1st, 2nd 등)%d날짜 숫자형 (00..31)%e날짜 숫자형 (0..31)%f마이크로초 (000000..999999)%H시..

DB/MySQL 2024.11.19