david's daily developer note

Oracle , Spatial Index 없는 Spatial Query 및 WKT 본문

Develop (kids)

Oracle , Spatial Index 없는 Spatial Query 및 WKT

mouse-david 2010. 11. 16. 11:55
728x90
이전 글에서 Spatial Query를 수행하기 위해서, SDO 타입의 변수 선언 및 메타데이터, INDEX 생성을 알아봤다.
하지만 특수한 경우에는, 예를 들어, 인덱스로 구성할 필드의 값이 매우 빈번하게 수정(삽입,삭제,갱신)이 발생하지만, 해당 필드의 데이터는 많지 않다면, INDEX를 유지하는 비용도 만만치 않다. 즉, INDEX를 유지해야할 만큼, 데이터가 크거나, 질의가 많고, 질의의 수행 시간이 중요한 경우가 아닌, 저장된 데이터의 수정만을 볼때는 INDEX의 구성은 불필요 할 수 있다.

오라클은 INDEX가 없는 테이블에 대한 공간 질의를 허용한다. 
예상 할 수 있듯이, 이 경우 Exact match가 일어나면서, 질의 성능은 인덱스를 구성하는 경우보다 떨어진다.

다음은 INDEX 를 구성하지 않은 SDO 관계 연산자에 대한 오라클 메뉴얼의 내용이다.

SDO_GEOM.RELATE(
geom1 IN SDO_GEOMETRY,
mask IN VARCHAR2,
geom2 IN SDO_GEOMETRY,
tol IN NUMBER
) RETURN VARCHAR2;

부가 설명은 너무 많아서, 직접 메뉴얼을 참조하면 되겠다. 인자를 순서대로 설명하면, 
geom1  = 특정 테이블에 SDO_GEOMETRY 타입으로 선언된 값들이며, 비교될 대상 필드를 의미한다.
mask   =  비교될 두 SDO_GEOMETRY 타입이 어떤 연산을 수행할지를 명시한다.
geom2 =  는 질의할 SDO_GEOMETRY
tol       =  비교 할 좌표 공간에서,Tolerance Value 

따라서 다음과 같은 질의 형태를 띠게 된다.

SELECT * 
FROM test c 
WHERE SDO_GEOM.RELATE(c.centerPoint , 'ANYINTERACT' , sdo_util.from_wktgeometry('POINT (30 60)'), 0.005 ) = 'TRUE';
728x90

'Develop (kids)' 카테고리의 다른 글

표준편차  (0) 2011.01.19
Blank Padding _ CHAR, VARCHAR 차이.  (0) 2010.12.22
Oracle Spatial Insert, Spatial Query for 3D Point  (0) 2010.11.10
PHP lecture  (0) 2010.11.10
Oracle .NET Client 무설치 배포.  (0) 2010.11.02