ArcSDE 지오 데이터베이스에 저장된 매우 큰 데이터 세트를 사용하여 ArcMap에서 작업하기위한 최고의 성능을 제공하는 것은 무엇입니까? 특정 기능에 레이블을 지정하기 위해 복잡한 SQL 쿼리를 사용하는 여러 레이블 클래스 또는 각 레이어에 대한 정의 쿼리로 설정된 동일한 복잡한 SQL 쿼리를 사용하는 동일한 레이어의 여러 사본?
ArcSDE 지오 데이터베이스에 저장된 매우 큰 데이터 세트를 사용하여 ArcMap에서 작업하기위한 최고의 성능을 제공하는 것은 무엇입니까? 특정 기능에 레이블을 지정하기 위해 복잡한 SQL 쿼리를 사용하는 여러 레이블 클래스 또는 각 레이어에 대한 정의 쿼리로 설정된 동일한 복잡한 SQL 쿼리를 사용하는 동일한 레이어의 여러 사본?
답변:
레이블 클래스의 SQL 쿼리가 분할 계층의 쿼리와 동일하다고 가정하면 여러 레이블 클래스가있는 단일 계층 접근 방식이 더 빠릅니다. 왜?:
ArcMap에서 라벨을 지정하면 레이어 그리기에 대해 하나의 쿼리를 실행 한 다음 각 레이블 클래스에 대해 하나의 쿼리를 실행합니다. 따라서 4 개의 레이블 클래스가있는 도면층은 그려진 모든 피쳐에 대해 한 번 쿼리 (1 개의 쿼리) 한 다음 총 4 회의 추가 시간 (각 레이블 클래스에 대해 하나씩 또는 4 개의 추가 쿼리) = 총 쿼리 5 개
레이어를 분리하면 각 레이어에 대해 1 개의 필터링 된 쿼리 (정의 쿼리) (4 개의 쿼리)와 각 레이블 클래스에 대해 동일한 쿼리 (4 개의 추가 쿼리) = 8 개의 총 쿼리가 있습니다.
대부분의 경우 데이터 소스에 따라 다르지만 일반 쿼리 오버 헤드로 인해 5 개의 쿼리가 8 개의 쿼리보다 빠릅니다.
ArcGIS Server에서 캐시는 기능 레이블링에 사용되며 레이블 클래스가 공급 업체별 기능없이 상당히 표준적인 SQL을 사용하는 경우 레이블 클래스가 4 개인 1 레이어는 하나의 쿼리를 통해 처리 될 가능성이 높습니다.
SDE 연결에서 오는 일부 NHD 데이터를 사용하여 몇 가지 매우 간단한 테스트를 실행했으며 두 방법 사이에 거의 차이가 없음을 발견했습니다.
몇 가지주의 사항 :
정의 쿼리는 속성 데이터 수준이 아니라 객체 수준에 있기 때문에 더 빠를 것이라고 생각합니다.
여전히 테스트해야합니다. 그러나 클래스를 레이블링하지 않고 정의 쿼리를 사용합니다.