[SQL] JOIN(결합)에 대해서(with.옵티마이저 및 결합 알고리즘)
2023. 2. 20. 13:42
데이터베이스/SQL
fk값이 무조건 있는 경우에는 left join 보다는 inner join을 사용하는 습관을 길러야 한다고 한다고 말씀하셨다. 그 이유를 찾고 공부한 내용을 정리하기 위해 작성한다. Join(결합)이란? 조인이란 두 개 이상의 테이블을 서로 묶어 하나의 결과 집합을 만들어 내는 것을 말한다. 즉, 데이터베이스에 있는 두 개 이상의 테이블의 데이터를 결합할 수 있는 SQL의 필수 기능이고 조인 작업을 사용하면 테이블이 서로 어떻게 관련되어 있는지 지정하여 여러 테이블에서 데이터를 검색할 수 있다. 이 글에서 다룰 결합이다. 내부 조인 (INNER JOIN)| 외부 조인 (OUTER JOIN) 왼쪽 (LEFT OUTER) 오른쪽 (RIGHT OUTER) 내부 조인 (INNER JOIN) 두 테이블에 일치하는..
[SQL] CROSS JOIN 이란? 그리고 JPA에서 주의할 점
2023. 2. 18. 21:53
데이터베이스/SQL
1. CROSS JOIN 이란? 크로스 조인은 모든 경우의 수를 전부 표현해주는 방식이다. 기준 테이블이 A일 경우 A의 데이터 한 ROW를 B테이블 전체와 JOIN 하는 방식이며, 결과가 N * M 이 된다. A테이블에 데이터가 3개, B테이블에는 데이터가 4개가 있으므로 총 12개가 검색된다. CROSS JOIN은 대개 테스트로 사용할 대용량의 테이블을 생성할 경우에 사용된다고 한다. 예를 들어, 각 5 만건과 7 만건의 테이블을 CROSS JOIN 하면 35억건의 데이터를 생성시킬 수 있다. 이 경우 두 테이블 컬럼들의 총 크기와 생성될 총 행수에 따라, 시스템이 다운되거나 디스크 용량이 꽉 차 버릴 수도 있으니 주의가 필요하다. 2. JPA에서 주의할 점 팀장님께서 말씀하신게 바로 이 부분인데, ..
[SQL] 정규화란?
2023. 2. 5. 19:03
데이터베이스/SQL
어느날 팀장님께서 이렇게 물었다 정규화가 뭔지 아세요? 머쓱하게 잘 모른다고 말씀드렸다. 다음에 같은 걸 물어보시면 대답해드리기 위해 공부한다. SQL 정규화란? 정규화는 1NF ~ 6NF 그리고 BCNF 가 있다. 하지만 보통, 3NF 정규화까지만 해도 충분하다고한다. 설명 데이터를 중복으로 저장하면 일관되지 않은 데이터, 비정상적인 삽입 갱신 삭제 처리, 디스크 공간 낭비 등 많은 문제를 일으킨다. 정규화는 중복 데이터를 저장하면서 일으키는 문제점을 없애려고 정보를 주제별로 분할하는 프로그램을 의미한다. 즉, 정규화란 데이터가 꼬이는 것을 막기위해 테이블을 잘게 나누는 것 행위다. 기본 목표 테이블 간에 중복된 데이터를 허용하지 않는다는 것, 중복된 데이터를 허용하지 않음으로써 무결성(Integrit..