글
1)
select idx,level from char_info where idx in (select no from user where no='298110' or no='4187793')
=> 원하는 것은 유저테이블의 no(pk) 가 298110 또는 4187793 인 레코드를 찾아서.. 캐릭터정보 테이블의 index(pk)
와 일치하는 유저 테이블 no를 찾는것...? 맞나???
2)
select idx,level from char_info where idx in ('298110','4187793')
저런 쿼리경우 서브 쿼리 해서 tmp 사용하시는것보단.. 그냥 아래쪽으로 쓰는게 빠르죠.. =>아마 임시 테이블 복사가(메모리)
이뤄지는듯 하다. string 작업 할때 += 연산 해줄때 퍼포먼스 떨어지는 것과 유사
아니면..
3)select idx,level from char_info a, (select no from user where no='298110' or no='4187793') <-인라인
아니면..
3)select idx,level from char_info a, (select no from user where no='298110' or no='4187793') <-인라인
쿼리...=메모리에 올린 사본 데이터 = 물리x 논리적 테이블 = 리절트셋 b
하여튼 1 vs 3의 차이점은 in() 이라는 키워드 이고..
아래 답글들을 보면.. in()의 경우 해당 조건을 확인위해 테이블 로우 풀스캔(전체 조회)이 일어나는듯하다.
지훈형님이 말씀하신 쿼리 튜닝의 개념인듯하다.. 중요하니까 신경써야함..!!
어렵고도 어려운~ (아래는 ms sql 포럼.. 오라클 개발자 포럼도 찾아봐야할듯.. 나~중~에)
http://www.mysqlkorea.co.kr/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=2917
아래는 오라클 개발자 포럼
selete 사용시 주의할점
(추가)
DB 테이블 최적화(설계단 문제) , 쿼리 최적화 또한.. 쉬운 분야가 아니다. 맛만 보았다.
'프로그래밍 > 데이터베이스' 카테고리의 다른 글
테이블간 조인 조건인 where 절에서 데이터 엑세스 조건 vs 처리(결과) 조건을 구분할 것! (0) | 2014.01.02 |
---|---|
초간단 selete 개념 잡기 -_-; + 오라클 내장 함수 , 사용자 정의 함수 , 쿼리 최적화 등 (0) | 2014.01.02 |
셀렉트문에서 -> 셀렉트 절에서 별칭의 의미 vs 프롬절에서 별칭의 의미 (0) | 2014.01.02 |
관계형 db에서 관계(relation)의 개념 (추가ALTER TABLE .. 제약 조건 추가) 12/19 추가 (0) | 2014.01.01 |
오라클 11 블로그 (2013/12/03) (0) | 2014.01.01 |
RECENT COMMENT