尝试使用UNION ALL而不是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 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 ALL

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;

性能下降的另一个潜在来源是你直接在P.G3E_GEOMETRY上使用两个SDO_UTIL.GET_VERTICES调用而另一个在P.G3E_GEOMETRY的变换上你将基本上有两个顶点列表的叉积的事实,所以例如,如果特定的P.G3E_GEOMETRY包含5个顶点,那么对于该5个顶点P.G3E_GEOMETRY,对于T和T2的25种可能组合中的每一种,最终将得到5 * 5条记录.我不知道顶点顺序是否由SDO_CS.TRANSFORM函数维护,但如果是,则可以通过在查询的每一半中添加和t1.id = t2.id谓词来提高性能:

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

AND T.ID = T2.ID

UNION ALL

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

AND T.ID = T2.ID;

oracle idcs,Oracle Spatial函数SDO_CS.Transform(value)结果非常慢相关推荐

  1. Oracle 数据库数据排名函数:rank() 和dense_rank() 。

    Oracle 数据库数据排名函数:  rank() 和dense_rank() . --------------------------------------------间断排名(也称强制排名)   ...

  2. Oracle存储过程和自定义函数

    概述 Oracle-procedure解读 Oracle存储过程和自定义函数 PL/SQL中的过程和函数(通常称为子程序)是PL/SQL块的一种特殊的类型,这种类型的子程序可以以编译的形式存放在数据库 ...

  3. Oracle数据库之单行函数

    oracle安装参照: Oracle数据库之安装教程 Oracel数据库总结: Oracle数据库之基本查询 Oracle数据库之单行函数 Oracle数据库之多行函数 Oracle数据库之多表查询 ...

  4. oracle 求时间差年,Oracle计算时间差常用函数

    两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒,毫秒): 天: sql;"> ROUND(TO_NUMBER(END_D ...

  5. oracle 分析函数、GROUPING函数

    分析函数 over(Partition by...) 一个超级牛皮的ORACLE特有函数.天天都用ORACLE,用了快2年了.最近才接触到这个功能强大而灵活的函数.真实惭愧啊!oracle的分析函数o ...

  6. oracle开窗函数是什么,ORACLE数据库(六)-----开窗函数

    ORACLE数据库(六)-----开窗函数 开窗函数又名分析函数.窗口函数.OLAP(数据分析)函数 聚合函数:将数据按照一定的规则分组,统一分析各组的某项情况,每个分组返回一行结果 开窗函数:将数据 ...

  7. oracle 中的trunc()函数及加一个月,一天,一小时,一分钟,一秒钟方法

    返回处理后的数据,不同于round()(对数值进行四舍五入处理),该函数不对指定小数前或后的数值部分进行舍入处理. 语法:trunc(number[,decimals]) 其中,number为待做处理 ...

  8. oracle中存储过程和函数有什么区别,Oracle中存储过程和函数的区别

    Oracle中存储过程和函数的区别 存储过程和函数:  www.2cto.com 例子: [sql] //创建过程 create or replace procedure add_emailinfo( ...

  9. Oracle提供的序号函数

    Oracle提供的序号函数: 以emp表为例: 1: rownum 最简单的序号 但是在order by之前就确定值. select rownum,t.* from emp t order by en ...

最新文章

  1. scipy csr_matrix csc_matrix
  2. python venv 复制_pythonenv的安装及迁移
  3. centos7下使用yum安装mysql并创建用户,数据库以及设置远程访问
  4. 05 Diagnostics 诊断
  5. GridView实现自动编号
  6. 平均 3000-20000 块不等,有空接外包私活的入群!
  7. Retina时代的前端视觉优化
  8. Java h264起始码_h.264 – 使用H264视频的起始码
  9. cuisineroyale服务器所在位置,cuisine royale进不去怎么办?原因及解决办法分享
  10. LocalDB 和Compact
  11. python 安装 setuptools Compression requires the (missing) zlib module 的解决方案
  12. 【考研数学】视频,你喜欢看哪位老师?
  13. 驱动人生解锁“C盘瘦身”功能,助力电脑快速运行
  14. Some file crunching failed, see logs for details解决方案 以及.9patch点9图片的报错的详细修改方法
  15. 校招----吉比特一面面经
  16. 初学者必看的JavaScript 七大点!
  17. windows10专业版安装应用商店方法
  18. 360全景图制作的原理是什么?有哪些必备的装备?
  19. 对tensorflow.constant()的理解
  20. 长安大学微型计算机原理与接口技术答案,长安大学微机原理与接口技术B卷答案...

热门文章

  1. 使用Sublime text 3打造一个小巧但强大的Go语言开发IDE
  2. jquery的closest方法和parents方法的区别
  3. 在一台服务器上搭建多个项目的SVN
  4. 大量多风格多功能后台管理模板
  5. 快速下载Spring官网下载dist.zip中所有jar,例如spring-5.2.10.RELEASE-dist.zip
  6. SublimeText3: ImportError: No module named ‘urllib2′
  7. Linux的which查找环境变量的文件
  8. Mysql的concat concat_ws group_concat
  9. jQuery Vue的CDN
  10. JS的parseFloat