
PLSQL
ZWWDLL
这个作者很懒,什么都没留下…
展开
-
SQL性能优化系列(一)
1、合适的oracle优化器 (rule、cost、choose) 2、访问表的方式a、全表扫描b、rowid访问 rowid记录的数据的物理地址信息,而oracle采用索引实现数据及其存放物理位置rowid之间的关联,故基于该些索引的查询就可以提高性能 3、共享sql 满足一下3个条件a、字符级比较 : 被执行语句必须和共享池中语句完全相同b、两语句所指转载 2014-01-03 15:15:42 · 589 阅读 · 0 评论 -
外连接查询
查询结果不仅返回满足条件的所有记录,还会返回不满足条件的部分记录,操作符号(+)select table1.column, table2.column from table1, table2where table1.column1(+) = table2.column2; //操作符(+)应放置在完全满足条件行的一端,即时显示记录较少的那行 select d.dname,e.e原创 2013-12-27 11:19:40 · 490 阅读 · 0 评论 -
ROLLUP和CUBE操作符
通常的GROUP BY统计,只会生成相关列的数据统计信息,无法生成小计和总计的统计1、ROLLUP 生成数据统计、横向小计、总计统计select deptno, job, avg(sal) from empgroup by rollup (deptno, job);显示每部门中每岗位的平均工资、每部门的平均工资、所有雇员平均工资 2、CUBE 生成数据统计、横向小计、纵向小转载 2013-12-27 16:32:11 · 731 阅读 · 0 评论 -
一个大数据量的修改SQL优化问题
1、优化前的SQL,修改需要5小时CREATE OR REPLACE PROCEDURE UPDATE_UserInfo_AnyField AS -- LOCAL VARIABLES HERE K VARCHAR2(5);BEGIN -- TEST STATEMENTS HERE FOR I IN 1 ..100 LOOP K := TO_转载 2014-02-17 17:11:42 · 955 阅读 · 0 评论 -
PLSQL获取用户锁并解锁
-- --创建表用来存储check到的锁信息create table T_LOCKED_SESSION( sid VARCHAR2(100), serialno VARCHAR2(100), eventno VARCHAR2(100), event VARCHAR2(100), module原创 2014-03-20 09:48:03 · 2770 阅读 · 0 评论 -
通过linux的进程ID查询该进程正在执行的SQL语句
select sql_text from v$sqltext a where (a.hash_value, a.address) in ( select decode(sql_hash_value, 0, prev_hash_value,sql_hash_value), decode(sql_hash_value, 0, prev转载 2014-06-17 10:48:57 · 1983 阅读 · 0 评论 -
只读、顺序事务
只读事务session1中:SQL>set transaction read only; ---时间点1 //必须是事务开始的第一条语句SQL>查询表a语句; ---时间点3session2中:SQL>修改表a语句;SQL>commit; ---时间点2//当在时间点3查询表a,数据仍然是时间点2修原创 2013-12-27 10:56:40 · 776 阅读 · 0 评论 -
用子查询更新数据
1、更新关联数据update emp set (job,sal,comm)=(select job,sal,comm from emp where ename='SMITH')where ename='SCOTT'; 2、复制表数据update employee set deptno= (select deptno from emp where empno=7788原创 2013-12-27 10:38:10 · 698 阅读 · 0 评论 -
SQL性能优化系列(二)
20、表连接替换EXISTS表连接比EXISTS效率更高SELECT ENAME FROM EMP E WHERE EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT_NO = E.DEPT_NO AND DEPT_CAT = ‘A'); (更高效) SELECT ENAME FROM DEPT转载 2014-01-07 16:03:43 · 577 阅读 · 0 评论 -
子查询
1、单行和多行子查询单行子查询:只返回一行数据的子查询语句select ename,sal,deptno from emp where deptno=(select deptno from emp where ename='scott')and ename多行子查询:返回多行数据的子查询语句IN操作符:处理匹配于子查询任一个值的行ALL操作符:必须与单行操作符结合使用,转载 2014-01-10 14:21:11 · 527 阅读 · 0 评论 -
其他复杂SQL查询
1、集合操作符4个操作符:UNION、UNION ALL、INTERSECT、MINUS语法格式:select 语句1[union | union all | intersect | minus]select 语句2使用集合操作符时,必须保证查询的列个数和类型匹配,且有一下限制:a、集合操作符不适用于LOB、VARRAY和嵌套表列来b、UNION、INTERSECT转载 2014-01-10 15:37:51 · 508 阅读 · 0 评论 -
nvl和nvl2函数使用
select name,sal,bonus,sal+NVL(bonus,0) from employer; //使用NVL,若bonus存在数值,则返回改值,若bonus为null,则返回0; select name,sal,bonus,NVL2(bonus,sal+bonus,sal) from employer; //使用NVL2,若bonus存在数值,则返原创 2013-12-27 09:21:18 · 693 阅读 · 0 评论 -
使用子查询复制数据
1、常规装载方式复制insert into employee(empno,ename,sal,deptno)select empno,ename,sal,deptno from empwhere deptno=20; //使用目标表的HWM以下空间,节省空间,速度慢2、直接装载方式复制insert /*+APPEND*/ into employee(empno,enam原创 2013-12-27 09:29:36 · 493 阅读 · 0 评论 -
into子句中使用子查询
insert into (select empno,ename,sal,deptno from emp where deptno=30)values(1112,'MARY',2000,30); //在部门30中增加一个成员MARYinsert into (select empno,ename,sal,deptno from emp where deptno=30 WITH原创 2013-12-27 09:37:46 · 929 阅读 · 0 评论 -
SQL:1999连接
select table1.column_name, table2.column_name from table1[CROSS JOIN table2]|[NATRUAL JOIN table2] |[JOIN table2 USING (column_name)] |[JOIN table2 ON (table1.column_name = table2.column转载 2013-12-27 15:56:39 · 653 阅读 · 0 评论 -
多表插入
无条件INSERT ALL:insert all into_clause [values_clause] subquery;//数据被无条件的复制到各自2张表内 insert allinto sal_record values(ename,hiredate,sal)into mgr_record values(ename,mgr,sal)select ename,hir原创 2013-12-27 10:14:51 · 639 阅读 · 0 评论 -
MERGE语句的使用
用来判断执行操作为insert还是update格式:merge into table_name table_alias using (table|view|sub_query) alias on(join condition) when matched then update set col1=col_val1,col2=col2_val2,... when原创 2013-12-27 10:25:10 · 602 阅读 · 0 评论