我有一個自定義視圖,它從幾何列中查詢空間數據並提取緯度/經度值。但是,檢索過程非常緩慢,需要5到10分鐘才能檢索視圖數據。Oracle空間函數SDO_CS.Transform(值)結果非常慢
這是我的觀點:
CREATE OR REPLACE FORCE VIEW PoleData
(
G3E_FID,
X_COORD,
Y_COORD,
LATITUDE,
LONGITUDE
)
AS
SELECT P.g3e_fid,
T2.X * 1000 AS x_coord,
T2.Y * 1000 AS y_coord,
T.Y AS latitude,
T.X AS longitude
FROM PolePoint P,
TABLE (
SDO_UTIL.GETVERTICES (SDO_CS.TRANSFORM (P.G3E_GEOMETRY, 8265))) T,
TABLE (SDO_UTIL.GETVERTICES (P.G3E_GEOMETRY)) T2
WHERE P.ltt_id = 0
UNION
SELECT P.g3e_fid,
T2.X * 1000 AS x_coord,
T2.Y * 1000 AS y_coord,
T.Y AS latitude,
T.X AS longitude
FROM PoleDetailPoint P,
TABLE (
SDO_UTIL.GETVERTICES (SDO_CS.TRANSFORM (P.G3E_GEOMETRY, 8265))) T,
TABLE (SDO_UTIL.GETVERTICES (P.G3E_GEOMETRY)) T2
WHERE P.ltt_id = 0;
的G3E_GEOMETRY
列SDO_GEOMETRY
類型。 PolePoint表有1,310,629行,而PoleDetailPoint有100個。這些表中的數據每天更新,而視圖用於報告目的。
我試着用status=cleanup
參數重建空間索引。但是這沒有什麼區別。
我們的版本是Oracle 11.2.0.3。
任何有關檢索這種類型的意見/數據的提示讚賞。或者我可以使用任何其他空間函數來更快地實現這一目標?
爲什麼問題DOWNVOTED?能否提出評論意見的用戶? – reggie
如果在PolePoint和PoleDetailPoint中沒有重疊,則可以使用'UNION ALL'而不是'UNION',那麼數據庫不必將結果區分開來。 – Sentinel
你真的需要'聯盟'嗎?爲什麼你不使用'union all'? –