У меня есть собственное представление, которое запрашивает пространственные данные из столбцов геометрии и извлекает значения широты/долготы. Однако процесс извлечения очень медленный и занимает от 5 до 10 минут для извлечения данных представления.
Вот мой взгляд:
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.
Любые советы по получению такого типа представлений/данных приветствуются. Или любые другие пространственные функции, которые я могу использовать для более быстрого достижения этого?
UNION ALL
вместоUNION
, тогда базе данных не придется различать результаты. - person Sentinel   schedule 04.09.2015Union
? почему вы не используетеunion all
? - person Florin Ghita   schedule 09.09.2015explain plan for select * from PoleData;
, а затемselect * from table(dbms_xplan.display);
. Производительность может не иметь ничего общего с SDO, это может быть просто плохой план выполнения. - person Jon Heller   schedule 14.09.2015