Oracle 数据库系统使用经验六则

 我来答
华源网络
2022-10-31 · TA获得超过5595个赞
知道小有建树答主
回答量:2486
采纳率:100%
帮助的人:147万
展开全部
   having 子句的用法    having 子句对 group by 子句所确定的行组进行控制 having 子句条件中只允许涉及常量 聚组函数或group by 子句中的列    外部联接 + 的用法    外部联接 + 按其在 = 的左边或右边分左联接和右联接 若不带 + 运算符的表中的一个行不直接匹配于带 + 预算符的表中的任何行 则前者的行与后者中的一个空行相匹配并被返回 若二者均不带 + 则二者中无法匹配的均被返回 利用外部联接 + 可以替代效率十分低下的 not in 运算 大大提高运行速度 例如 下面这条命令执行起来很慢   select a empno from emp a where a empno not in(select empno from emp where job= SALE );   倘若利用外部联接 改写命令如下:   select a empno from emp a emp b where a empno=b empno(+) and b empno is null and b job= SALE ;   可以发现 运行速度明显提高    删除表内重复记录的方法    可以利用这样的命令来删除表内重复记录:   delete from table_name a where rowid< (select max(rowid) from table_name where column =lumn and column =lumn and colum =lum and );   不过 当表比较大(例如 万条以上)时 这个方法的效率之差令人无法忍受 需要另想办法(可参看拙文《电信计费中长途重复话单的技术处理》 《计算机与通信》 )    set transaction 命令的用法    在执行大事务时 有时oracle会报出如下的错误:   ORA :snapshot too old (rollback segment too *** all)   这说明oracle给此事务随机分配的回滚段太小了 这时可以为它指定一个足够大的回滚段 以确保这个事务的成功执行 例如   set transaction use rollback segment roll_abc;delete from table_name where mit;   回滚段roll_abc被指定给这个delete事务 mit命令则在事务结束之后取消了回滚段的指定    使用索引的注意事项    select update delete 语句中的子查询应当有规律地查找少于 %的表行 如果一个语句查找的行数超过总行数的 % 它将不能通过使用索引获得性能上的提高    索引可能产生碎片 因为记录从表中删除时 相应也从表的索引中删除 表释放的空间可以再用 而索引释放的空间却不能再用 频繁进行删除操作的被索引的表 应当阶段性地重建索引 以避免在索引中造成空间碎片 影响性能 在许可的条件下 也可以阶段性地truncate表 truncate命令删除表中所有记录 也删除索引碎片    数据库重建应注意的问题    在利用import进行数据库重建过程中 有些视图可能会带来问题 因为结构输入的顺序可能造成视图的输入先于它低层次表的输入 这样建立视图就会失败 要解决这一问题 可采取分两步走的方法:首先输入结构 然后输入数据 命令举例如下 (uesrname:jfcl password:hfjf host sting:ora 数据文件:expdata dmp):   imp jfcl/hfjf@ora file=empdata dmp rows=Nimp jfcl/hfjf@ora file=empdata dmp full=Y buffer= mit=Y ignore=Y   第一条命令输入所有数据库结构 但无记录 第二次输入结构和数据 字节提交一次 ignore=Y选项保证第二次输入既使对象存在的情况下也能成功 lishixinzhi/Article/program/Oracle/201311/17776

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式