일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 등호
- 거듭제곱
- 컬럼조회
- SQL
- 마이플랫폼
- websquare
- 계정계
- 등가조인
- sqldeveloper
- 운영계
- 기간계
- orangefororacle
- NVM
- java
- 대외계
- websqueare
- innerjoin
- 정보계
- StringTokens
- Collections.sort
- eclipse shortcut
- 환경변수등록
- 소수 #소인수분해 #소인수
- 펙토리얼
- REACT
- fusionchart
- javascript내장함수
- oracle
- JavaScript
- Baekjoon
- Today
- Total
티끌모아 개발
조인을 걸기 위해 생각해야 할 조건. 본문
1. 드라이빙 테이블(즉 가장 많은 컬럼들의 값을 불러내야할 메인이 되는 테이블을 선택)
2. 테이블 간에 관계를 파악해야 한다. (메인 테이블과의 관계를 파악해서 해당 사이드 테이블을 INNER JOIN을 해야 하는지, OUTER JOIN을 걸어야하는지, UNION ALL을 걸어야 하는지 파악)
- 파악이 안될 경우 질문을 하던 데이터를 뒤지던 아예 해당 테이블을 받던지 어떻게던 파악을 하고 있어야 한다.
3. 뎁스로 값을 뽑아와서 거기서 다른 테이블과 조인을 걸어 값을 빼와야 할 경우 효율적인 선택을 해야한다. (나같은 경우 불필요한 데이터까지 모두 조회를 해 온 테이블에서 특정값을 뽑아내는 식의 조인을 생각했다면, 앞으로는 특정값을 뽑아서(조회의 시간과 노력이 덜들도록) 그 값을 이용해 특정값을 다른테이블에서 뽑아내는 방식사용.)
4. 조인을 걸때에 반드시 INDEX를 확인해야 한다. INDEX는 속도와 연관이 있으며 해당 INDEX가 존재하지 않는것은 생성의뢰를 해야 한다.
5. 단일 서브쿼리, 스칼라 서브쿼리등 서브쿼리를 사용해 값을 추출할 수 있는 것은 그렇게 처리할 수 있다.
나머지는 NOT EXISTS나EXISTS, ROW_NUMBER와 같은 함수를 사용한 값추출들과 같은 것들이 있다.
참고글
필요(요청)에 따라서 실시간으로 표현되고 사라지고 하는 논리적인 Entity들, 바로 이것들을 만들기 위한 방법이 SQL언어라고 생각하시면 될 것입니다. SQL 잘 짜려면 문법도 중요하지만 테이블 설계하는 것과 똑같이 논리적인 분석 설계가 잘 되어야 쿼리를 잘 짜게 될 것입니다. 퀄리를 빨리 짜기 위해 모방하는 것은 좋습니다. 하지만 그게 계속 반복된다면 자기 생각이 아니기에 몇년 후에 경력이 쌓여서도 언제나 Copy & Paste의 반복은 계속될 것입니다. 분석은 발했지만 어떻게 구현하지? 당연히 어려울 수 있습니다. 이때 도움을 받던 사례를 보던 전개하는 방법을 내가 설계한 내용을 기준으로 한다면 아~ 이렇게 표현하면 되는구나 하고 자기 지식이 되는 것을 느끼게 될 것입니다.
출처: https://searchstory.tistory.com/entry/SQL고수되기-첫번째-이야기 [Homo Convergence Story]
결국 테이블간의 관계를 만들고 분석, 설계할 줄 알게되면 좋은 쿼리를 짤 수 있게 되는것.
'sql' 카테고리의 다른 글
[ORACLE]다중 테이블(2개이상) 조인시 주의사항. (0) | 2021.12.07 |
---|---|
서브쿼리의 종류 (0) | 2021.12.03 |
조건값이 NULL일 때 데이터 출력 시 주의 사항(NVL vs CASE문)NVL에 대한 잘못된 이해 바로잡음. (0) | 2021.12.01 |
쿼리 실행 순서[펌] (0) | 2021.12.01 |
식별관계, 비식별관계 (0) | 2021.11.12 |