大家看看这种insert

sl19841106123 2011-01-11 02:36:15


INSERT /*+ APPEND*/
INTO ODS_O_SERV_USER_OCS_DAY NOLOGGING
SELECT /*+PARALLEL(T,10)USE_HASH(t,a)*/
V_MONTH ACCT_MONTH,
SUBSTR(V_DATE, 7, 2),
TO_CHAR(USER_ID),
T.CITY_CODE,
'',
'',
SERVICE_ID,
'1',
TO_CHAR(FAVOUR_ID),
DEALER_ID,
LEFT_FEE,
TO_CHAR(STATE),
TO_CHAR(MISSSTATE),
BLACKSTATE,
TO_CHAR(FIRSTRECHARGEFLAG),
TO_CHAR(FIRSTCALLFLAG),
TO_CHAR(CREDITLIMIT),
DELETETIME,
EXPIRE_DATE,
SERVICESTART,
ACCOUNTSTOP,
'',
''
FROM STAGE.BB_PPS_USER_INFO_T



这种插入有什么好处么
NOLOGGING 是什么意思
...全文
55 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sl19841106123 的回复:]
SQL code
/*+ APPEND*/ /*+PARALLEL(T,10)USE_HASH(t,a)*/
这两个注释必需加上么,这连个注释什么意思
[/Quote]
这个叫hint,具体的用法和作用你可以google下
/*+ APPEND*/
使用批量直接路径插入(归档模式使用nologging)可以减少undo及redo生成量
sl19841106123 2011-01-11
  • 打赏
  • 举报
回复
谢谢大家帮助
心中的彩虹 2011-01-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 sl19841106123 的回复:]
SQL code


INSERT /*+ APPEND*/
INTO ODS_O_SERV_USER_OCS_DAY NOLOGGING
SELECT /*+PARALLEL(T,10)USE_HASH(t,a)*/
V_MONTH ACCT_MONTH,
SUBSTR(V_DATE, 7, 2),
TO_CH……
[/Quote]

/*+ APPEND*/
直接插入空闲的快

/*+PARALLEL(T,10)
以及开启了并行


--nologging 不写入日志
sl19841106123 2011-01-11
  • 打赏
  • 举报
回复
/*+ APPEND*/ /*+PARALLEL(T,10)USE_HASH(t,a)*/
这两个注释必需加上么,这连个注释什么意思

南风呼呼的吹 2011-01-11
  • 打赏
  • 举报
回复
这种插入就是很方便罢了 相当于从这张表的数据导到另一张表
NOLOGGING 就是不需要写入日志了 这种方式有利有弊的
minitoy 2011-01-11
  • 打赏
  • 举报
回复
哦,看错,你应该是只截取了一段,USE_HASH指定两表使用hash join.
minitoy 2011-01-11
  • 打赏
  • 举报
回复
append hint会指引insert语句直接使用段中的新块,nologging则不产生redo,更改直接写进数据文件.PARALLEL hint指示多个cpu并行处理语句.所有的目的都是为了提高insert的效率.
USE_HASH貌似没用,因为是对单表的操作.

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧