DB2/400 조회 및 색인과 관련된 공통 문제점은 필드 속성과 관련이 있습니다. 예를 들어 동일한 속성이없는 필드를 사용하여 두 테이블을 조인하는 경우 임시 필드를 파생 한 후 데이터베이스에서 특수한 직접 인덱스를 작성해야 할 수 있습니다. 예를 들어 숫자 (8,0)는 소수 (11,3)와 같지 않습니다. 함께 가입 할 수는 있지만 임시 색인이 작성되는 경우가 많습니다. 이것은 분명히 성가심입니다. 자주 사용하는 수정 사항은 조인 문의 내 필드를 캐스팅하여 필드를 항상 올바른 속성으로 결합하는 것입니다. 예를 들면 다음과 같습니다.
LEFT JOIN DBRQRQH ON DBRQH_COMPANY = DBWHS_COMPANY AND DBRQH_REQ_NUMBER = CAST(DBWHS_DOC_NBR AS NUMERIC(7,0))
WHERE 절의 경우에도 마찬가지 일 수 있습니다. 조인을 캐스팅해도 도움이되지 않으면 선택한 기준으로 CAST를 사용해보십시오.
다음은 쿼리 성능 최적화를위한 또 다른 팁입니다. ODBC를 통해 연결하고 쿼리를 실행하기 전에 중단 점을 사용하여 디버그 세션에서 C# 프로그램을 시작합니다. 그런 다음 WRKACTJOB JOB (QZDASOINIT)을 사용하여 AS/400 (iSeries)에서 ODBC 작업을 찾으십시오. 사용자 프로필이있는 작업을 찾습니다. 또는 적어도 연결할 때 사용되는 사용자 프로필.당신이 직업을 찾을 때, (녹색 화면에서)이 두 명령을 디버그 모드로 전환 :
STRSRVJOB JOB(258094/QUSER/QZDASOINIT)
(참고 : 작업 번호는 찾을 ODBC 작업에 따라 변경됩니다).
STRDBG UPDPROD(*YES)
그런 다음 C# 프로그램에서 쿼리를 실행하고 AS/400에서 선택한 QZDASOINIT 작업의 작업 로그를 검사합니다. 디버그 모드에있는 작업에서 SQL을 실행하면 작업 로그에 모든 유용한 정보가 표시됩니다. 작업이 끝나면 ENDDBG를 실행 한 다음 ENDSRVJOB을 실행하십시오.
일반적으로 누군가가 새로운 DBMS로 업그레이드 할 것을 권장하는 지점입니다. – NickHeidke