개발/db(4)
-
관계형 테이블에 pk가 필요할까?
https://hoonzi-text.tistory.com/104 멀티컬럼 PK는 왜?어느 날, 친구에게 이런 카톡을 받았다. 이런 상황에서는 학생_수업 테이블에는 PK(primary key)를 만들어야 하는가에 대한 질문이었다. 나는 항상 테이블을 만들 때 PK를 기본으로 만들고 시작했었hoonzi-text.tistory.com 나랑 똑같은 그림을 보고 똑같은 질문을 한 사람이 정리한글 결론부분PK는 행을 구분하기 위해, 다른 테이블과의 연관 관계를 알기 위해 (PK-FK) 사용한다.PK 지정 시, INDEX가 걸려 해당 칼럼으로 조회 시 굉장히 빠르게 접근 가능하다. 대신 INDEX 정보 값이 추가되고, 삽입시마다 해당 정보 값을 갱신!Index 값(PK 값)으로 여러 개의 칼럼을 지정 가능하다.꼭..
2024.10.29 -
10만건 정도에서 중복 확인 시간
일반적인 성능 기대치 인덱스를 잘 활용했을 때, 10만 건 정도의 데이터에서 중복 확인을 위한 쿼리 성능은 다음과 같습니다: 인덱스 없음: 전체 테이블 스캔이 필요하므로 시간이 오래 걸릴 수 있습니다. 보통 수백 밀리세컨드에서 수 초까지 걸릴 수 있습니다. 인덱스 사용: 인덱스를 사용하면 쿼리가 빠르게 처리됩니다. 일반적으로 수 밀리세컨드에서 수십 밀리세컨드 이내에 처리됩니다. 구체적인 예상 시간 최소 시간: 1 밀리세컨드 (서버가 고성능이고 데이터베이스가 최적화된 경우) 평균 시간: 5~50 밀리세컨드 (일반적인 서버 사양과 최적화 상태) 최장 시간: 100 밀리세컨드 이내 (낮은 성능의 서버 또는 많은 부하가 있는 경우) SELECT EXISTS( SELECT 1 FROM users ..
2024.09.09 -
ENUM 보다 TINYINT 보다 CHAR
ENUM 타입은 비교적 작고 정적으로 변경되지 않는 값들을 사용할 때는 유용하지만, 성능과 유연성 측면에서 단순한 CHAR 타입보다 불리할 수 있습니다. 특히 업데이트나 검색이 빈번하게 일어나는 경우에는 CHAR(1)이나 TINYINT 타입이 더 나은 선택이 될 수 있습니다. CHAR(1)을 사용하면 단순하게 'Y'나 'N' 같은 값을 직접 저장할 수 있어서 성능과 관리 측면에서 더 효율적입니다.
2024.08.21 -
sql 반복문으로 년도 만들기
sql 에서 join을 위해 년도 테이블을 읨의로 만드는 방법 SELECT T.date AS 'year', COUNT(r.issue_de) AS year_countFROM ( SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL seq - 1 YEAR), '%Y') AS date FROM ( SELECT @num := @num + 1 AS seq FROM information_schema.tables a , information_schema.tables b , (SELECT @num := 0) c ) seq_table WHER..
2024.03.12