2011-07-06 1 views
1

내가하고있는 일은 ....AS/400 질의 응답 시간

나는 C#/.Net 응용 프로그램에서 ODBC (현재 ODBC를 사용해야 함)를 통해 AS400에 연결하고 있습니다. 쿼리가 개가 느립니다. 나는 DBmonitor &을 실행하여 파일이 QQIDXA = 'Y'인 곳으로 리턴하고 이미 존재하는 색인을 작성한다고 알려줍니다. 이유 코드는 I1 & I3입니다.

행운과 같은 순서로 색인을 다시 작성했습니다.

내 AS400 쿼리를 향상 시키려면 어떻게해야합니까? ???

AHIA, LarryR ...

+0

일반적으로 누군가가 새로운 DBMS로 업그레이드 할 것을 권장하는 지점입니다. – NickHeidke

답변

2

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을 실행하십시오.

3

첫째, 일부 명칭. AS/400은 아주 아주 오래된 기계입니다. 이제 어떤 사람들은 후속 모델을 'AS/400'이라고 부르지 말아야한다고 주장합니다. 이것은 웹 검색시 귀하에게 불리하게 작용할 수 있습니다. IBM은 AS/400 이후 여러 세대의 미드 레인지 머신을 만들었습니다. iSeries, System i 및 IBM i를 사용해보십시오.

이러한 중급 시스템의 데이터베이스는 DB2의 변형이며 다른 데이터베이스와 거의 비슷하게 조정됩니다. 일반적으로 적절한 인덱스는 데이터베이스 성능 문제의 첫 번째 솔루션입니다. WHERE 절만 보지 마십시오. JOIN ON 및 ORDER BY를 고려하십시오.

IBM에는 Navigator라는 무료 구성 요소가있는 클라이언트 액세스 (iSeries Access, IBM i Access)라는 소프트웨어가 있습니다. 네비게이터에는 Visual Explain이라는 매우 훌륭한 DB 도구가 있습니다. 미드 레인지 관리자에게 PC에 Navigator를 설치하십시오. 당신은 또한 MIDRANGE-L 메일 링리스트에 질문을 게시 고려할 수 있습니다

2

:

IBM은 도움이 될 데이터베이스 조정에 대한 몇 가지 레드 북을 발표했다.

많은 DB2 전문가가 있습니다.