[DB 초보라서요] 요즘 MSSQL 공부중입니다.
#) 부모테이블 TB_BOOK 은 bookno가 유니크 합니다.
#) 자식테이블 TB_BOOK_PAGE 는 bookno 와 pageno 조합으로 유니크 합니다.
bookno = 1 번인 자료를 가져오는데 어느 쿼리문으로 하는게 더 효율적일 까요? (간단한 설명 좀 .. DB초보라서 죄송요 ㅠ)
1번) Select * From TB_BOOK_PAGE A, TB_BOOK B Where A.bookno = B.bookno And B.bookno = 1
2번) Select * From TB_BOOK_PAGE A, (Select * From TB_BOOK Where bookno = 1) B Where A.bookno = B.bookno
Comment 2
-
지영아빠
2022.11.17 09:44
-
이리
2022.11.18 15:47
SQL Server 사용하신다면 가급적 SQL은 ANSI 구문으로 사용하시는걸 권장 드립니다.
TB_BOOK 테이블에서 찾아야 할 data가 1건이고 TB_BOOK_PAGE 테이블에서 찾아야 할 data가 N건이고
해당 컬럼들에 대한 인덱스 사용이 가능하다면 실행계획은 이렇게 나올거 같습니다.
먼저 TB_BOOK테이블에서 bookno = 1인 data를 찾고 TB_BOOK_PAGE 테이블에서 TB_BOOK에서 찾은 bookno와 같은 data를 찾아서 반환.
작성해주신 2개의 쿼리는 동일한 실행계획이 나올것으로 판단합니다.
지영아빠님 말씀대로 실행계획을 한번 확인해 보시면 좋을것 같습니다.
제가 보기에는 Join도 Inner join, Bookno를 찾는 조건도 AND
연산의 순서만 다르게 한 거 같으네요.
근데 AND AND의 연산이라 교환법칙이 성립되지 않을까 합니다.
(=코스트는 거의 동일할 것 같으네요. )
더 자세한 건 실행계획을 보면 나오지 않을까 하네요 ^^