2012-11-12 5 views
1

몇 가지 많은 테이블이 포함 된 복잡한 측면에서 약간의 데이터베이스 설정이 있습니다.ColdFusion은 루프 내에서 쿼리 성능을 개선합니다.

이 데이터에서 XML 문서를 생성하려고합니다. 한 언어에서 이름이 정의되지 않은 경우 null을 표시하는 대신 다른 언어에서 이름을 가져 오려고하는 경우처럼 약간의 확인이 있습니다.

문제점 루프 내에 많은 쿼리가 있습니다.

퍼포먼스를 향상시키기 위해 어떤 물건을 사용하고 무엇을 사용해야하는지 등의 지침이 있습니까?

cfoutput cfloop cfquery?

+0

몇 가지 예제 코드를 게시 할 수 있습니까? 우리는 거기에서 몇 가지 지침을 제공 할 수 있습니다. –

+1

SQL Server와 MySQL에는 XML 데이터 형식이 있습니다. 저장 프로 시저 내에서 루핑을 모두 수행하고 해당 XML을 ColdFusion에 다시 제공하면됩니다. XML 데이터 유형은 편리한 기능을 제공합니다. –

+0

가능할 때마다 반복하지 않는 것이 좋습니다. 임시 테이블 (필요한 경우)을 활용하고 루핑보다는 ​​세트 기반 업데이트를 사용하십시오. – Leigh

답변

4

루핑 논리가 기본적으로 데이터 처리를 수행하는 경우 (예 : 첫 번째 쿼리의 값을 기반으로 다음 쿼리를 위해 데이터베이스로 돌아갈 항목을 결정할 때 성능을 위해 할 수있는 최선의 방법은 당신의 CF 코드에서 그 모든 논리를 빼내서 DB에 넣으십시오. 데이터 처리를 위해 DB를 사용하고 처리 된 데이터를 처리하기 위해 CF를 사용하고 출력으로 변환합니다.

CF가 데이터 조작을 수행하는 유일한 시간은 다른 소스 (예 : 데이터베이스, 일부 원격 서비스, 파일 시스템, 다른 데이터베이스 등)의 데이터를 처리해야하는 경우입니다. 기본적으로 데이터베이스가 ColdFusion과 관련된 데이터 처리 자체를 수행하십시오.

1

"한 언어에서 이름이 정의되지 않은 경우처럼 (다른 언어에서 이름을 가져 오려고합니다 (null이 아닌)"와 관련하여).

쿼리에서이 작업을 수행 할 수 있어야합니다. 거의 모든 DB는 병합 기능을 가지고 있습니다. 그들은 모두 케이스 구조를 지원합니다. 당신은 당신의 상황에 가장 적합한 방법을 고르면됩니다.