2014-12-31 1 views

답변

2

먼저 클라이언트에 검색된 모든 행이 필요한지 확인하십시오. 프로세스가 "모든 것을 검색 한 다음 검색된 행에서 일부 클라이언트 측 계산을 수행"과 같은 경우라면 서버의 저장 프로 시저에서이 모든 처리를 수행하는 것이 좋습니다.

공유 객체를 조사하고 백그라운드 스레드에서 검색을 수행 할 수 있습니다.

검색된 열 수를 실제로 필요한 수로 제한하십시오. "Select * from table"은 항상 나쁜 생각입니다 ...

"Retrieve as Needed"가 도움이 될 수 있지만 사용자가 온라인 행을 "페이징"하는 경우에만 해당됩니다. 큰 보고서 인 경우이 옵션을 선택해도 이점이 없습니다.

궁극적으로 "검색된 행 수가 많을 때마다"실제로 앉아서이 모든 데이터가 클라이언트 응용 프로그램으로 내려와야하는지 확인해야합니다. - 폴 Horan-

0

비동기 검색

당신이 너무 많은 행을 검색해야하는 경우

는 dbparm 속성을 통해 비동기 적하려면 데이터베이스 작업을 설정하는 것입니다. 이것이하는 유일한 일은 더 나은 성능의 환상을주는 GUI를 자유롭게 해줍니다. 비동기가 도움이되지 않는 한 가지는 쿼리와 첫 번째 행을 반환하는 사이의 시간입니다. 첫 번째 행이 검색 될 때까지 GUI가 잠겨 (모래 시계), 이후 비동기로 GUI가 비 모래 시계가 될 수 있습니다. 비동기에서는 다른 곳에서 트랜잭션 문제가 발생할 수 있으므로 다른 트랜잭션 객체를 사용하는 것이 좋습니다.

반드시 필요한 각 행에 대해 한 번 실행 행를 많이 검색 할 때 극적으로 검색을 저하시킬 수 있기 때문에하지 않는 한 sqlpreview 코드, 심지어 코멘트를 넣지 마십시오

데이터 윈도우 오브젝트 sqlpreview 이벤트 없음 코드입니다.

캐시 드롭 다운 데이터 윈도우 데이터 또는 데이터 윈도우의는 특히 행의 많은 성능에게 많은 영향을 줄 수있는 행의 많은 드롭 다운이있는 경우

가능하다면 어떤 반 정적 데이터. 데이터가 정적 인 경우 메모리에 캐시 한 다음 shareData 함수와 함께 datawindow getChild 함수를 사용하여 수동으로 데이터를 드롭 다운 데이터 윈도우에 할당 할 수 있습니다.

이 제안은 정말 '거기'는 구분 된 형식

의 데이터를 검색 파워 빌더 프로그램, 또는 그 문제에 대한 모든 프로그래밍의 일반적인 패러다임을 넘어. 데이터와 인터페이스가 허용된다면 데이터 덩어리로 데이터를 반환하는 저장 프로 시저를 잠재적으로 사용할 수 있습니다. 데이터 덩어리는 데이터 윈도우로 행을 가져올 본질적으로 구분 된 데이터입니다. 이것은 15 년 동안의 PB 프로그래밍에서 본 적이없는 일이지만, 몇 가지 상황에서 작동 할 수 있습니다.많은 행을 검색 할 때 많은 통신 오버 헤드가 있으므로 서버 무차별 대입 전력/속도 및 빠른 가져 오기 행 기능을 위해 오버 헤드가 최소화됩니다.

바울의 대답에 특히 동의합니다. 검색의 크기를 상당히 줄일 수 있으므로 특히 열의 수를 제한합니다. 블로킹 크기 설정은 성능에 도움이되지만 그다지 도움이되지 않을 수 있습니다.