楼主: ys_yinqin

[PL/SQL] [急急急]oracle有没有个功能可以从数据库表中取出数据然后通过计算然后创建一个新表?

[复制链接]
论坛徽章:
1
山治
日期:2016-11-01 10:13:33
21#
 楼主| 发表于 2016-10-31 15:02 | 只看该作者
lhqmccn 发表于 2016-10-31 14:48
想让大家帮忙,你要这样贴出可用的测试数据来,

看看下面的测试数据及结果是不是你想要的

谢谢大神!!

我用你的语句测试,得到的表就是如预期的(只差个备注和执行时间),

请问下如果TEST表比较大(1亿),然后将里面的数据select出来后建一个新表,有没有好的建议?

再次感谢!!!

使用道具 举报

回复
论坛徽章:
8
马上加薪
日期:2014-08-06 20:08:11处女座
日期:2015-07-24 17:19:00巨蟹座
日期:2015-08-18 09:38:49天蝎座
日期:2015-08-18 13:16:54水瓶座
日期:2015-08-20 16:44:16双鱼座
日期:2016-02-24 13:41:33巨蟹座
日期:2016-05-12 16:40:06天枰座
日期:2016-05-20 13:29:48
22#
发表于 2016-10-31 15:27 | 只看该作者
create table t as select 逻辑 from test?

使用道具 举报

回复
论坛徽章:
1
山治
日期:2016-11-01 10:13:33
23#
 楼主| 发表于 2016-10-31 15:35 | 只看该作者
lhqmccn 发表于 2016-10-31 15:27
--直接将查询结果建表,

CREATE TABLE test2 AS

谢谢大神!

这个方案可行!

还有两个问题:
1. 这个建表语句可以用/*+ parallel */吗?这样第一次建表的时候是否会更快呢?
2. 源数据库每天大约更新5W数据,后续这个新建的表如何维护呢?

使用道具 举报

回复
论坛徽章:
1
山治
日期:2016-11-01 10:13:33
24#
 楼主| 发表于 2016-10-31 15:37 | 只看该作者
wak338025 发表于 2016-10-31 15:27
create table t as select 逻辑 from test?

之前都没有转过弯来,好在有大神提醒不用三重循环,直接选择就好了!

使用道具 举报

回复
论坛徽章:
9
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-02-28 17:57:18蜘蛛蛋
日期:2013-03-06 17:16:15茶鸡蛋
日期:2013-03-26 17:32:46雪佛兰
日期:2013-11-26 10:47:53优秀写手
日期:2014-01-22 06:00:12马上有车
日期:2014-04-16 17:19:19慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
25#
发表于 2016-10-31 15:45 | 只看该作者
ys_yinqin 发表于 2016-10-31 15:35
谢谢大神!

这个方案可行!

想自动更新,查询出来的结果别建新表,直接建成视图。
这样源数据有更新,视图的内容也会更新,

CREATE VIEW test2 AS
SELECT id 序号,
       to_char(dates, 'mm') 月,
       to_char(dates, 'dd') 日,
       AVG(a) a均值,
       MIN(to_char(dates, 'YYYY')) 开始年份,
       MAX(to_char(dates, 'YYYY')) 结束年份,
       MAX(to_char(dates, 'YYYY')) - MIN(to_char(dates, 'YYYY')) 间隔年份,
       ' ' 备注,
       SYSDATE 修改时间
  FROM test
GROUP BY id, to_char(dates, 'mm'), to_char(dates, 'dd')
ORDER BY id, to_char(dates, 'mm'), to_char(dates, 'dd')

使用道具 举报

回复
论坛徽章:
1
山治
日期:2016-11-01 10:13:33
26#
 楼主| 发表于 2016-10-31 16:15 | 只看该作者
lhqmccn 发表于 2016-10-31 15:45
想自动更新,查询出来的结果别建新表,直接建成视图。
这样源数据有更新,视图的内容也会更新,

建了视图后,就会自动更新吗?
感谢回复!

使用道具 举报

回复
论坛徽章:
9
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-02-28 17:57:18蜘蛛蛋
日期:2013-03-06 17:16:15茶鸡蛋
日期:2013-03-26 17:32:46雪佛兰
日期:2013-11-26 10:47:53优秀写手
日期:2014-01-22 06:00:12马上有车
日期:2014-04-16 17:19:19慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
27#
发表于 2016-10-31 16:36 | 只看该作者
ys_yinqin 发表于 2016-10-31 16:15
建了视图后,就会自动更新吗?
感谢回复!

会,你试试

使用道具 举报

回复
论坛徽章:
1
山治
日期:2016-11-01 10:13:33
28#
 楼主| 发表于 2016-10-31 16:48 | 只看该作者

测试了,源数据1个亿,用这个语句只要0.19s就建好了目标视图,但是打开视图卡住了。。不会锁表吧?

使用道具 举报

回复
论坛徽章:
9
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-02-28 17:57:18蜘蛛蛋
日期:2013-03-06 17:16:15茶鸡蛋
日期:2013-03-26 17:32:46雪佛兰
日期:2013-11-26 10:47:53优秀写手
日期:2014-01-22 06:00:12马上有车
日期:2014-04-16 17:19:19慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
29#
发表于 2016-10-31 16:57 | 只看该作者
本帖最后由 lhqmccn 于 2016-10-31 16:58 编辑
ys_yinqin 发表于 2016-10-31 16:48
测试了,源数据1个亿,用这个语句只要0.19s就建好了目标视图,但是打开视图卡住了。。不会锁表吧?

源数据量大的原因,用我刚给的测试数据,建个视图,就很快,就可以显示,


另外把给你的sql语句中,那个order by 限制去掉吧,这个排序耗资源

使用道具 举报

回复
论坛徽章:
9
2013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-02-28 17:57:18蜘蛛蛋
日期:2013-03-06 17:16:15茶鸡蛋
日期:2013-03-26 17:32:46雪佛兰
日期:2013-11-26 10:47:53优秀写手
日期:2014-01-22 06:00:12马上有车
日期:2014-04-16 17:19:19慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
30#
发表于 2016-10-31 17:10 | 只看该作者
按版主的方法,建个物化视图吧,可以定时更新。刚建的普通视图,等于每次查询,都是执行那个查询sql,性能会慢,
http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html

使用道具 举报

回复

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

本版积分规则 发表回复

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