일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- rs422
- windows10
- matplot
- scrapy
- Serial
- c#
- MX Component
- 딥러닝
- 윈도우10
- tensorflow
- Python
- MEAN Stack
- 자본주의
- 파이썬
- MSSQL
- 텐서플로우
- sql developer
- oracle
- 티스토리 초대장
- 오라클
- django
- M2M
- pymssql
- Visual Studio Code
- 장고
- vscode
- MSSQL PYTHON
- rs485
- 크롤링
- PYTHON MSSQL
Archives
- Today
- Total
안까먹을라고 쓰는 블로그
[MSSQL] OPENQUERY - BETWEEN 성능??? (Feat. ORACLE) 본문
반응형
MSSQL에서 ORACLE 서버를 링크드서버 설정하여, 프로시저에서 OPENQUERY를 사용하는데,,
계속 잘 되던 쿼리인데,, 갑자기 되지않는다..성능문제인지,,,
BETWEEN에서 아래와 같이 하면 안되는데,,
SUBL_DATE BETWEEN TO_CHAR(SYSDATE-7,''YYYYMMDD'') AND TO_CHAR(SYSDATE,''YYYYMMDD'')
아래와 같이 직접입력을 해주면 조회가 됨;;;;
SUBL_DATE BETWEEN ''20220808'' and ''20220812'' ')
■ 안되는 쿼리 (기존쿼리)
- 프로시저에서 일반 쿼리로 실행되도록 처리
INSERT INTO CZ_KIDV_OUTPUT_PARCEL
(
SUBL_DATE, TAX_NO, SUBL_NO, ORDER_NO, RCVR_NM, RCVR_TEL_NO,
RCVR_ZIP_NO, RCVR_ADDR, RCVR_DETAIL_ADDR, INVC_NO, BOX_QTY, GDS_NM, REG_DATE, REMARK
)
SELECT SUBL_DATE, TAX_NO, SUBL_NO, ORDER_NO, RCVR_NM, RCVR_TEL_NO,
RCVR_ZIP_NO, RCVR_ADDR, RCVR_DETAIL_ADDR, INVC_NO, BOX_QTY, GDS_NM, REG_DATE, REMARK
FROM OPENQUERY(MWMS, 'SELECT * FROM KIDV_OUTPUT_PARCEL A WHERE TAX_NO=''0443'' AND SUBL_DATE BETWEEN TO_CHAR(SYSDATE-7,''YYYYMMDD'') AND TO_CHAR(SYSDATE,''YYYYMMDD'') ') A
WHERE NOT EXISTS (SELECT 1 FROM CZ_KIDV_OUTPUT_PARCEL Z WITH (NOLOCK)
WHERE Z.SUBL_DATE = A.SUBL_DATE
AND Z.TAX_NO = A.TAX_NO
AND Z.SUBL_NO = A.SUBL_NO
AND Z.INVC_NO = A.INVC_NO)
■ 되는 쿼리
- 쿼리 문자열 선언하여, EXEC 로 실행하도록 변경
DECLARE @V_SQL NVARCHAR(MAX)
, @P_DT_START CHAR(8)
, @P_DT_END CHAR(8)
SET @P_DT_START = CONVERT(CHAR(8), GETDATE(), 112)
SET @P_DT_END = CONVERT(CHAR(8), DATEADD(DAY, -7, GETDATE()), 112)
SET @V_SQL = '
INSERT INTO CZ_KIDV_OUTPUT_PARCEL
(
SUBL_DATE, TAX_NO, SUBL_NO, ORDER_NO, RCVR_NM, RCVR_TEL_NO,
RCVR_ZIP_NO, RCVR_ADDR, RCVR_DETAIL_ADDR, INVC_NO, BOX_QTY, GDS_NM, REG_DATE, REMARK
)
SELECT SUBL_DATE, TAX_NO, SUBL_NO, ORDER_NO, RCVR_NM, RCVR_TEL_NO,
RCVR_ZIP_NO, RCVR_ADDR, RCVR_DETAIL_ADDR, INVC_NO, BOX_QTY, GDS_NM, REG_DATE, REMARK
FROM OPENQUERY(MWMS, ''SELECT * FROM KIDV_OUTPUT_PARCEL A WHERE TAX_NO=''''0443'''' AND SUBL_DATE BETWEEN ''''' + @P_DT_START + ''''' AND ''''' + @P_DT_END + ''''' '') A
WHERE NOT EXISTS (SELECT 1 FROM CZ_KIDV_OUTPUT_PARCEL Z WITH (NOLOCK)
WHERE Z.SUBL_DATE = A.SUBL_DATE
AND Z.TAX_NO = A.TAX_NO
AND Z.SUBL_NO = A.SUBL_NO
AND Z.INVC_NO = A.INVC_NO)
'
EXEC (@V_SQL)
끝~
반응형
'DataBase > MS SQL' 카테고리의 다른 글
[MSSQL] MSSQL IN절에 필드 여러개 사용 (0) | 2022.09.19 |
---|---|
[MSSQL] 트리거(TRIGGER) - 활성화(Enable)/비활성화(Disable) (0) | 2022.08.29 |
[MSSQL] 중복확인 및 제거방법 (0) | 2022.08.11 |
[MSSQL] 통계(DATEPART) 구하기 (년,분기,월,주간,일 단위) (0) | 2022.08.11 |
[MSSQL] OPENQUERY 예제 쿼리 (0) | 2022.08.08 |
Comments