查看: 8038|回复: 26

【讨论】sql优化,求指导

[复制链接]
论坛徽章:
4
优秀写手
日期:2015-02-12 06:00:14沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2015-1-14 09:47 | 显示全部楼层 |阅读模式
刚做数据库开发不久,昨天创建了一个视图,这个视图的数据量查出来在12万条左右,但是查询时间竟然要3、4分钟才能出结果,求各位大神指导,应该怎么优化这个视图呢?不胜感激!!!代码如下
  1. CREATE OR REPLACE VIEW UV_PLAN2BACK_NEW1 AS
  2. SELECT fs.sfdm,
  3.                fs.qydh,
  4.                fs.station_id,
  5.                fs.ddbh,
  6.                fs.ssqy,
  7.                fs.ssxl,
  8.                fs.sszh,
  9.                jp.jcxs,
  10.                jp.sjxs,
  11.                fs.qdje qdje1,
  12.                fs.fcje fcje1,
  13.                (fs.qdje + fs.fcje) qdje,
  14.                fs.o_count,
  15.                fs.qdrq,
  16.                decode(jp.type, 1, jp.jcxs * 200000, 0) jhje,
  17.                pkg_new_reprt.uf_get_total_zcje_new(fs.sfdm, fs.qydh, fs.station_id, fs.batch, fs.ddbh) sjje,
  18.                decode(jp.jcxs, jp.sjxs, 1, 0) is_ok,
  19.                fs.type,
  20.                g.zhlh,
  21.                fs.revicetype, decode(fs.revicetype, 3, decode(fs.type, 1, decode(pkg_new_reprt.uf_get_total_zcje_new(fs.sfdm, fs.qydh, fs.station_id, fs.batch, fs.ddbh), 0, 0, round(qdje / pkg_new_reprt.uf_get_total_zcje_new(fs.sfdm, fs.qydh, fs.station_id, fs.batch, fs.ddbh) * 100, 2)), ''), '') hcl
  22.           FROM finance_summary fs, jkjh_process jp, gddd g
  23.          WHERE fs.sfdm = jp.sfdm(+)
  24.                AND fs.qydh = jp.qydh(+)
  25.                AND fs.station_id = jp.station_id(+)
  26.                AND fs.sfdm = g.sfdm
  27.                AND fs.qydh = g.qydh
  28.                AND fs.station_id = g.station_id
  29.                AND fs.batch = jp.batch(+)
  30.                AND fs.ddbh = jp.ddbh(+)
  31.                AND fs.ddbh = g.ddbh
  32.                and flag=0;
复制代码
不胜感激
求职 : 数据库管理员
认证徽章
论坛徽章:
11
ITPUB社区千里马徽章
日期:2013-06-09 10:15:34懒羊羊
日期:2015-03-04 14:52:11懒羊羊
日期:2015-02-10 13:36:05马上有对象
日期:2015-02-02 12:29:02红宝石
日期:2015-01-19 09:44:10马上有车
日期:2014-11-11 14:16:07马上有车
日期:2014-03-27 15:59:39优秀写手
日期:2014-03-12 06:00:13马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
发表于 2015-1-14 09:49 | 显示全部楼层
贴执行计划

使用道具 举报

回复
论坛徽章:
1088
金色在线徽章
日期:2007-04-25 04:02:08金色在线徽章
日期:2007-06-29 04:02:43金色在线徽章
日期:2007-03-11 04:02:02在线时间
日期:2007-04-11 04:01:02在线时间
日期:2007-04-12 04:01:02在线时间
日期:2007-03-07 04:01:022008版在线时间
日期:2010-05-01 00:01:152008版在线时间
日期:2011-05-01 00:01:342008版在线时间
日期:2008-06-03 11:59:43ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30
发表于 2015-1-14 09:50 | 显示全部楼层
没有执行计划弄个毛啊

使用道具 举报

回复
论坛徽章:
4
优秀写手
日期:2015-02-12 06:00:14沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2015-1-14 09:53 | 显示全部楼层
dingjun123 发表于 2015-1-14 09:50
没有执行计划弄个毛啊

稍等稍等,有点卡

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:43:09喜羊羊
日期:2015-05-18 16:24:25慢羊羊
日期:2015-06-12 13:08:22暖羊羊
日期:2015-07-02 16:06:20暖羊羊
日期:2015-07-06 16:28:55狮子座
日期:2015-07-29 17:14:43摩羯座
日期:2015-09-02 13:58:47白羊座
日期:2015-09-08 10:39:06天枰座
日期:2015-09-17 21:41:53摩羯座
日期:2015-10-29 21:07:02
发表于 2015-1-14 09:56 | 显示全部楼层
还要提供执行计划和统计信息。
注:要真实的执行计划,如何获取真实的执行计划可参考:http://www.jb51.net/article/39723.htm

使用道具 举报

回复
论坛徽章:
4
优秀写手
日期:2015-02-12 06:00:14沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2015-1-14 10:00 | 显示全部楼层

使用道具 举报

回复
论坛徽章:
4
优秀写手
日期:2015-02-12 06:00:14沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2015-1-14 10:09 | 显示全部楼层
执行计划如下
  1. PLAN_TABLE_OUTPUT
  2. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  3. Plan hash value: 2154539823

  4. --------------------------------------------------------------------------------------------------
  5. | Id  | Operation               | Name                 | Rows  | Bytes |TempSpc| Cost (%CPU)| Time         |
  6. --------------------------------------------------------------------------------------------------
  7. |   0 | SELECT STATEMENT       |                 |   122K|    19M|         |  2836   (1)| 00:00:35 |
  8. |*  1 |  HASH JOIN               |                 |   122K|    19M|         |  2836   (1)| 00:00:35 |
  9. |   2 |   TABLE ACCESS FULL    | GDDD                 |  1023 | 25575 |         |     7   (0)| 00:00:01 |
  10. |*  3 |   HASH JOIN RIGHT OUTER|                 |   122K|    16M|  7392K|  2828   (1)| 00:00:34 |
  11. |   4 |    TABLE ACCESS FULL   | JKJH_PROCESS         |   116K|  6026K|         |   684   (1)| 00:00:09 |
  12. |*  5 |    TABLE ACCESS FULL   | FINANCE_SUMMARY |   122K|    10M|         |  1199   (1)| 00:00:15 |

  13. PLAN_TABLE_OUTPUT
  14. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  15. --------------------------------------------------------------------------------------------------

  16. Predicate Information (identified by operation id):
  17. ---------------------------------------------------

  18.    1 - access("FS"."SFDM"="G"."SFDM" AND "FS"."QYDH"="G"."QYDH" AND
  19.               "FS"."STATION_ID"="G"."STATION_ID" AND "FS"."DDBH"="G"."DDBH")
  20.    3 - access("FS"."SFDM"="JP"."SFDM"(+) AND "FS"."QYDH"="JP"."QYDH"(+) AND
  21.               "FS"."STATION_ID"="JP"."STATION_ID"(+) AND "FS"."BATCH"="JP"."BATCH"(+) AND
  22.               "FS"."DDBH"="JP"."DDBH"(+))
  23.    5 - filter("FLAG"=0)

  24. 22 rows selected.
复制代码


复制代码


使用道具 举报

回复
论坛徽章:
126
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00
发表于 2015-1-14 10:16 | 显示全部楼层
执行计划没有什么问题,我认为,目前语句执行慢的主要原因pkg_new_reprt.uf_get_total_zcje_new, 这回导致语句性能变差,你可以看看是否能把pkg_new_reprt.uf_get_total_zcje_new的功能整合到目前的语句中,如果本身代码业务逻辑非常复杂,那就算了

使用道具 举报

回复
论坛徽章:
4
优秀写手
日期:2015-02-12 06:00:14沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2015-1-14 10:20 | 显示全部楼层
bell6248 发表于 2015-1-14 10:16
执行计划没有什么问题,我认为,目前语句执行慢的主要原因pkg_new_reprt.uf_get_total_zcje_new, 这回导致 ...

嗯嗯 我试一下

使用道具 举报

回复
论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
发表于 2015-1-14 10:20 | 显示全部楼层

自定义函数害的吧,你这个是个过程
可以将自定义函数部分拎出来赋值给变量

在sql中直接使用变量值

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表