以下の規則は、地理情報述部を使用して地理情報照会を最適化する場合に適用されます。
WHERE db2gse.ST_Within(c.location,:BayArea)=1
WHERE db2gse.ST_Within(c.location,:BayArea)=1
表 4 は、地理情報索引を活用するために地理情報照会を作成する場合の正しい方法と間違った方法を示しています。
地理情報照会 | 違反している規則 |
---|---|
SELECT * FROM customers c WHERE db2gse.ST_Within(c.location,:BayArea)=1 | この例で違反している条件はありません。 |
SELECT * FROM customers c WHERE db2gse.ST_Distance(c.location,:SanJose)<10 | この例で違反している条件はありません。 |
SELECT * FROM customers c WHERE db2gse.ST_Length(c.location)>10 | ST_Length は地理情報述部ではない。 |
SELECT * FROM customers c WHERE 1=db2gse.ST_Within(c.location,:BayArea) | 述部は比較の左辺に置かなければならない。 |
SELECT * FROM customers c WHERE db2gse.ST_Within(c.location,:BayArea)=2 | 等価性の比較では、整数定数 1 を使用しなければならない。 |
SELECT * FROM customers c WHERE db2gse.ST_Within(:SanJose,:BayArea)=1 | 検索ターゲットとして述部に使用する地理情報列がなければならず、その列に対する地理情報索引が作成されていなければならない。 (SanJose と BayArea は地理情報列ではないので、地理情報索引が関連付けられない。) |