최근 포토로그


MS-SQL 쿼리 ON절과 Where 절의 차이 SQL Server 2008 R2

프로젝트 수행중 쿼리 속도이유 때문에 고민하고 있다.

ANSI 코드 방시으로 쿼리를 작성하는 중 ON절과 Where 절의 차이가 뭘까 궁금하여
여러가지 방식으로 테스트를 진행해 보았다.

어떤 방식에서는 같은 결과값이 나왔으나
어떤 방식에서는 다른 결과값이 나왔다.

원인을 알아보기 위해 구글링...ㅋㅋ

.................LOADING........................

내부 조인일 경우에는 ON절과 Where절 어디에 조건을 써도 같은 결과가 나온다.
하나 외부 조인일 경우에는 다르다는 사실을 알았다.

외부 조인일 경우
1. ON절에 조건을 사용할 경우 키값 조인을 하기전에 조건을 제외한다.
2. Where절에 조건을 사용할 경우 테이블 조인의 결과값에 대한 조건검색 결과를 나타낸다.

규칙 LEFT OUTER JOIN 시 ON 절에서는  
우측(널값으로 채워지는 쪽)의 추가 제약조건을 넣고 
좌측의 추가 제약조건은 WHERE절에 넣어야 한다.

위 내용을 토대로 속도이슈에 대한 문제를 어느정도 해결할수 있을 것 같다.
외부 DB의 내용을 DBLink로 실시간으로 가져와 보여주는게 대부분이다 보니
많은 부하가 걸려 사이트 로딩 속도가 오래 걸리는 문제를 해결하기 위해
직접적으로 외부 DB를 맘대로 수정할수 있는 권한 또한 없을 뿐더러 오로지 쿼리 튜닝뿐...
이제 어느 정도 해결될 조짐이 보인다. ......

이런 문제에 대해 고민하는 개발자들이 많이 있을줄 안다.
해결책을 찾고자 해도 주위의 사람들은 모르는 사람들이 많을 뿐더러 정작 찾고자 했을때
찾기가 힘들다...

부디 이런 문제로 고민하시는 개발자 분들에게 좋은 정보가 되시길....

아래는 어렵게 찾은 고마우신 분의 정보와 해당 블로그를 링크하였다.


LEFT OUTER JOIN 시에 ON 절과 WHERE 절에 추가 제약조건 넣는 규칙


1. 원하는 결과값
SELECT *  --(184개 행 적용됨)
FROM TBHZM200 AS A LEFT OUTER JOIN MST_TKT_STA_STOCK AS B 
ON  a.Extn_Sta_No = b.Extn_Sta_No   
AND B.Oper_DT = '20090713'    <-- 우측의 추가 제약조건
WHERE A.Transp_Oper_Org_CD = '1'   <-- 좌측의 추가제약조건
 

2. 잘못된 예 -- INNER JOIN의 결과가 나오게 됨.
SELECT *  --(176개 행 적용됨)
FROM TBHZM200 AS A LEFT OUTER JOIN MST_TKT_STA_STOCK AS B 
ON  a.Extn_Sta_No = b.Extn_Sta_No   
AND  A.Transp_Oper_Org_CD = '1' 
WHERE b.Oper_DT = '20090713'     


3. 잘못된 예 
 SELECT * --(503개 행 적용됨) 
 FROM TBHZM200 AS A LEFT OUTER JOIN MST_TKT_STA_STOCK AS B 
 ON  a.Extn_Sta_No = b.Extn_Sta_No   
 AND B.Oper_DT = '20090713'                 <--둘다 ON 절에 위치함.
 AND A.Transp_Oper_Org_CD = '1'

 
4. 잘못된 예  
 SELECT * --(176개 행 적용됨)
 FROM TBHZM200 AS A LEFT OUTER JOIN MST_TKT_STA_STOCK AS B
 ON  a.Extn_Sta_No = b.Extn_Sta_No  
 WHERE B.Oper_DT = '20090713'    <--둘다 where절에 위치
 AND A.Transp_Oper_Org_CD = '1'

위의 예제는 http://ultteky.egloos.com/10411192 에서 참고하였다.

공유하기 버튼

 

렙31 궁수 배경이 끝내주네.. 테라

솔플로 퀘스트 깨는중..
배경이 멋있어서 ㅋㅋ
선인장마을..
포포리아 31렙 궁사 로제니아...

테라 그래픽 죽이네..

어서 만렙까지 키워야지..

공유하기 버튼

 

윈도우7 방화벽에서 포트 사용할수 있게 하기.. Win7

제어판 > 시스템 및 보안 > Windows 방화벽 > 고급설정으로 들어간다.


위 그림에서 인바운드 규칙과 아웃바운드 규칙의 새규칙을 만든다.

먼저 포트를 선택하고 > TCP/UDP 선택하고 특정 로컬 포트에 원하는 포트 번호를 넣는다. > 연결허용을 선택 > 도메인/개인/공용 원하는 설정을 하고 > 규칙이름을 지정하면된다.

공유하기 버튼

 

mssql server 2008 R2 외부에서 접속이 안될때 조치사항 SQL Server 2008 R2

먼저 sql Server 구성관리자를 실행한다.
SQL Server 서비스를 클릭하면 현재실행중인 서비스들의 목록이 보인다.
그중 SQL Sever서비스의 속성으로 들어가면
아래 그림과 같은 화면이 나온다.
기본제공계정의 값을 네트워크 서비스로 설정한다.


다음으로
SQL Sever 네트워크 구성 > MSSQLSEVER에 대한 프로토콜에서 >  TCP/IP의 값을 사용으로 설정한다.

위와같은 방법을 취했으나 여전히 외부에서 접속이 안된다면
윈도우 방화벽에서 포트가 차단되어 있는 경우가 있다.

윈도우7에서 방화벽 포트 사용설정은
http://pdw213.egloos.com/3969021
이곳에서 정리되어 있습니다.

공유하기 버튼

 

DB접속방법 JSP Study


JSP + Oracle

 - Class.forName("oracle.jdbc.driver.OracleDriver");

 - DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "id", "pass");

 

 

JSP + MS-SQL

 - Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

 - DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=DB명", "id", "pass");

 

 

JSP + MySQL

 - Class.forName("org.gjt.mm.mysql.Driver");

 - DriverManager.getConnection("jdbc:mysql://localhost:3306/DB명", "id", "pass");



[출처]JSP + Oracle, MS-SQL, MySQL 연결 법

공유하기 버튼

 

1 2 3 4 5 6 7 8