[SQL] 쿼리 짤 때 주의할 점

gayoung·2024년 2월 28일

DB

목록 보기
16/16

1. PK는 무조건 조건절에 넣어줘야한다.

  • PK는 각 행을 고유하게 식별하기 때문
  • PK는 중복값이나 null값이 입력될 수 없기 때문

2. PK값을 조건절에 넣을 때 위치가 중요함

  • 쿼리가 어떤 로직으로 짜여졌는지 확인해야함

    • 1) 이 조건을 inner join에 가지고오면, table1의 val_id가 TEMP이면서 table1과 table2에 공통으로 있는 인 경우를 다 가지고옴
      select * from table1 a
    		inner join table2 b on and a.val_id = b.temp
    • 2) 이 조건을 left join에 걸면, table1의 모든 val_id를 보여주고, table2에 있는 값을 붙여서 보여줌
      select * from table1 a
    		left outer join table2 b on a.val_id = b.val_id
    • 3) join 밑에 하면, 위에서(join절에서) 동일한 애들만 다 가지고온 후에 위의 조건을 만족하는 애들만 가지고옴
      select * from table1 a
                inner join table2 b on a.val_id = b.val_id 
                left outer join table3 c on a.val_id = c.val_id
       where a.val_id = 'TEMP'

3. 조건절을 무조건적으로 바인딩변수 또는 특정값을 넣는 쿼리보다, 바인딩 변수 또는 특정 값은 최소한으로 쓰는 쿼리가 더 좋은 쿼리임

  • 1번보다 2번이 좋은 쿼리
   -- 1번 쿼리
    select * from table1 a
    inner join table2 b on a.key_id = b.key_id and a.val_id = 'TEMP'
    left outer join table3 c on a.key_id = b.key_id and a.val_id = 'TEMP'
    where a.val_id = 'TEMP'
   -- 2번 쿼리
    select * from table1 a
    inner join table2 b on a.key_id = b.key_id and a.val_id = b.val_id
    left outer join table3 c on a.key_id = b.key_id and a.val_id = c.val_id
    where a.val_id = 'TEMP'

0개의 댓글