oracle分类
ningguixin
喜欢游泳嘿嘿
展开
-
oracle批量更新一个表中的一个字段
<br />最近遇到一个sql问题。老大们让我把一个表中的一列数据做更新。更新的内容和对照表有给提供。后来仔细查看资料 总结出这样的sql<br />语句。<br />update 更新表 b set(b.需要更新的字段) = (<br />select a.参考更新字段 from 对照表 a where a.对照表旧字段=b.更新表需要更新的字段<br />)<br />注意:一定要用where条件。<br /> <br />这个sql的意思试试活把b表的需要更新字段通过查询对照表与原来的表用where原创 2011-03-14 10:46:00 · 11074 阅读 · 2 评论 -
oracle虚拟索引详解
DBA在日常维护管理数据库进行低性能SQL分析时,有时候需要通过创建索引对SQL进行优化,但有些时候我们创建的索引是否能用到?这个只能创建以后才能看出效果,但是在实际工作中,特别是对大表创建索引对系统性能有很大影响,因此我们不得不避开业务高峰时段,但是有没有一种办法创建索引而不影响性能呢?有,虚拟索引。虚拟索引不是物理存在的,它并不会创建实际的索引段,只是在数据字典中加了一个索引的记录,使得优转载 2014-02-17 22:53:15 · 859 阅读 · 0 评论 -
关于Oracle索引的几个知识点
一、oracle的索引陷阱一个表中有几百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这主要可能是oracle的索引限制造成的。 oracle的索引有一些索引限制,在这些索引限制发生的情况下,即使已经加了索引,oracle还是会执行一次全表扫描,查询的性能不会比不加索引有所提高,反而可能由于数据库维护索引的系统开销造成性能更差。下面是一些常见的索引限制问题。转载 2013-12-17 09:18:25 · 689 阅读 · 0 评论 -
乐观锁与悲观锁
下面先就乐观锁与悲观锁的概念及基本用法做下介绍,因为网上的已经比较详细,就直接摘抄了******************************************************************锁( locking ) 业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个 cut-off 时间点的转载 2013-10-20 20:47:52 · 893 阅读 · 0 评论 -
ORACLE纯SQL实现多行合并一行
项目中遇到一个需求,需要将多行合并为一行。表结构如下:NAME Null Type------------------------ --------- -----N_SEC_CODE NOT NULL CHAR(6)C_RESEARCHER_CODE NOT转载 2013-08-23 12:30:01 · 898 阅读 · 0 评论 -
PL/SQL Developer自动补全SQL技巧
s = SELECT * FROM w = WHEREb = BETWEEN ANDl = LIKE '%%'o = ORDER BYinsw = IN (SELECT a FROM a WHERE a )sw = SELECT t.* FROM t WHERE tsc* = SELECT COUNT(*) FROM tst = SELECT t.* ,t原创 2013-07-11 10:21:17 · 13965 阅读 · 1 评论 -
exists、in区别与性能
IN 确定给定的值是否与子查询或列表中的值相匹配。 EXISTS 指定一个子查询,检测行的存在。 性能区别:in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。 一直以来认为exists比in效率高的说法是不准确的。 如果查询的两个表大小相当,那么用in和exists差别不大。原创 2013-03-25 18:04:49 · 558 阅读 · 0 评论 -
oralce 递归查询语句
在数据库查询中常常会碰到要查询树形结构的数据,需要用一个字段的数据当做下一条记录的父节点继续查询,如果在不知道有多少级节点的情况下一次次手写SQL查询会很繁琐而没有效率,这时可以使用 oracle中的connect with prior递归算法:Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: se转载 2013-03-08 12:27:09 · 922 阅读 · 0 评论 -
exists 效率与用法
有两个简单例子,以说明 “exists”和“in”的效率问题1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T12) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而原创 2013-01-18 17:06:30 · 1084 阅读 · 0 评论 -
使用存储过程用execute immediateSQL报ORA-01031错误问题的解决
使用存储过程用execute immediateSQL报ORA-01031错误问题的解决2010年12月3日14:09遇到的问题及情况说明 用normal用户登录时,在执行到execute immediate s;时会出错:报:ORA-01031:insufficient privileges权限不足 错误,用sys,DBA登录时则不会出错。 代码如转载 2012-08-23 15:05:55 · 5822 阅读 · 0 评论 -
ORA-00257: archiver error. Connect internal only, until freed 错误 解决办法
archive log 日志已满ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法1. 用sys用户登录 sqlplus sys/pass@tt as sysdba2. 看看archiv log所在位置SQL> show parameter log_archive_dest;NAME转载 2012-07-31 15:37:28 · 1126 阅读 · 0 评论 -
oracle sid 与 servername 区别
SID是实例名,实例名指的是用于响应某个数据库操作的数据库管理系统的名称。实例名是由初始化参数文件的参数instance_name决定的。如果这个参数不被指定(即instance_name没有被指定为任何值),那么实例的名字由该用户的环境变量ORACLE_SID(注意这里是大写)决定。在windows平台下,则是注册表中oracle_sid值决定。SERVICE_NAME指的是listener转载 2014-04-23 16:48:28 · 12472 阅读 · 0 评论