Database

Database/mysql

[MySQL] 외래키 쓰면 안되는 이유

외래키(Foreign Key)는 데이터베이스에서 두 테이블 간의 관계를 정의할 때 사용하는 개념 외래키는 한 테이블의 필드(또는 컬럼)가 다른 테이블의 기본 키(Primary Key)를 참조할 때 사용 이렇게 하는 것으로 데이터의 일관성과 무결성이 보장되지만, 몇 가지 단점 또는 고려사항들이 있음 1. 성능 문제 외래키를 사용하면 INSERT, UPDATE, DELETE 작업 시 해당 테이블뿐만 아니라 참조하는 테이블까지 확인해야 함. 이로 인해 작업 속도가 느려질 수 있음. 2. 복잡성 증가 외래키 관계를 설정하면 데이터베이스 구조가 복잡해질 수 있음. 이로 인해 쿼리 작성이나 데이터베이스 관리가 어려워질 수 있음. 3. 삭제 제한 외래키로 참조되는 테이블의 데이터를 삭제하려고 할 때, 그 데이터를 참..

Database/mysql

[MySQL] 메모리 낭비 없이 전화번호 저장

int 형으로 전화번호를 적재하는 컬럼을 생성하고, 전화번호 01012345678 을 저장하면 1012345678 로 변환되어 저장된다. 그래서 보통 데이터 타입을 varchar 로 선언하는 경우가 많은데, zerofill 설정을 해주면 값이 없으면 공백을 0으로 채워주기 때문에 01012345678가 정상적으로 출력된다. 그리고 전화번호는 절대 음수가 될 일이 없으므로 UNSIGNED-ZEROFILL 으로 설정해준다. 예시 : alter table user modify column number int(11) unsigned zerofill not null; 이 방식으로 하면 vachar 보다 메모리를 절약할 수 있어서 효율적이다.

Database/mysql

[MySQL] Count 성능 비교

쿼리문 성능 볼 수 있는 명령어는 EXPLAIN 1. count(*) over() as 2. (select count(*) from TABLE) as count + group by 결론 => 서브쿼리 없이 count(*) over() as 하는 것이 성능이 더 좋음

Database/mysql

[MySQL] auto_increment 쓰면 안되는 이유

1. 데이터베이스 이전시킬 때, 중간에 끊기는 숫자가 있으면 그 숫자부터 다시 센다. (데이터가 많을때, 예를 들면 1~100까지 데이터가 있었다고 치고, 52가 없는 상태면 새로 이전하는 db에서 데이터가 새로 들어올 때, 101번을 안매겨주고 52번을 매겨준다. 그 다음에 101번을 매겨줘야 하는데 53번을 매겨준다. 근데 53번은 이미 있으니 에러를 밷는다.) 2. 카운트가 1억 정도까지 가면 index 메모리 낭비가 심해진다.

Database/mysql

[MySQL] 파티션

데이터가 많아지면 mysql에 부하가 걸리므로 파티션을 나눠줘야 한다. MySQL에서는 4가지 파티션 종류를 지원한다. - Range 파티션 - List 파티션 - Hash 파티션 - Key 파티션 Range 파티션 (출처 : https://hoing.io/archives/8527) 파티션 키의 연속된 범위로 파티션을 정의 하는 방식 이며 가장 일반적으로 사용 되는 파티션 종류 입니다. MAXVALUE 파티션을 이용해 정의 되지 않은 값의 범위의 키 값을 저장을 하게 됩니다. Range 파티션에서 NULL은 어떤 값보다 작은 값으로 간주 됩니다. 날짜 컬럼의 값으로 파티션 할 경우 다음의 예시 를 주의 해야 합니다. - UNIX_TIMESTAMP() 이용한 변환 식을 파티션 키로 사용 - 날짜를 문자열로..

hyun_ji
'Database' 카테고리의 글 목록