1.19 Oracle SpatialによるDatabase In-Memoryのサポート

Spatialでは、Oracle Database In-Memoryテクノロジの使用がサポートされています。

Database In-Memoryで空間表を使用できるようにするには、仮想列を追加してから、SDO_FILTERなどの演算子を使用して、空間索引を使用せずにその表を問い合せます。

空間表は通常の方法で作成します。vz_test1という既存の2次元の測地表に、次のようにUSER_SDO_GEOM_METADATAビューに挿入された、空間列geolocが含まれているとします。


INSERT INTO user_sdo_geom_metadata
     VALUES(
     'vz_test1',
     'geoloc',
     SDO_DIM_ARRAY(
        SDO_DIM_ELEMENT('X', -180, 180, .00000005),
        SDO_DIM_ELEMENT('Y',  -90,  90, .00000005)),
        4326);
COMMIT;

表を変更してインメモリー空間機能を有効にし、空間表にINMEMORYを指定します。たとえば、前述の2次元の表の場合は次のようになります。

ALTER TABLE vz_test1 INMEMORY INMEMORY SPATIAL(geoloc);

その後、ユーザーはその表に対して問合せを実行できます。たとえば:

SELECT * FROM vz_test1 WHERE SDO_FILTER(geoloc, :x) = 'TRUE';

この手法では、その表がOracle Database In-Memory内にあるため、空間索引は必要ありません。