.比较truncate 和 delete 命令?
2.如何查找重复记录
3.如何删除重复记录?
4.写一个删除表A,再创建表的脚本.其中至少有两个字段,可随意取名?
5.写一个存储过程,传入参数为:20050901字符串,要输出为2005-9-14的日期型.)
6.使用索引的理由?
7.怎样才能使SQL语句在内存中被共用?要满足那几个条件?
8.解释data block,extent 和segment 的区别?
9.解释冷备份和热备份的不同点以及各自的优点
2.如何查找重复记录
3.如何删除重复记录?
4.写一个删除表A,再创建表的脚本.其中至少有两个字段,可随意取名?
5.写一个存储过程,传入参数为:20050901字符串,要输出为2005-9-14的日期型.)
6.使用索引的理由?
7.怎样才能使SQL语句在内存中被共用?要满足那几个条件?
8.解释data block,extent 和segment 的区别?
9.解释冷备份和热备份的不同点以及各自的优点
select to_date('20050901','yyyy-mm-dd') from dual;类似的过程6.使用索引的理由?提高访问速度
解释冷备份和热备份的不同点以及各自的优点冷备份需要关机 热备份可以在线 呵呵 我就知道这么点 大家一起了
2) truncate 不记日志,执行效率比delete高很多。
2、举例说明, 表A中只有一个字段 a
select a from A group by a having count(*) > 1
3、delete from A where rowid < (select max(rowid) from A B where A.a = B.a)
create table b( a varchar2(30), b varchar2(30);
create table b( a varchar2(30), b varchar2(30);
加快查询速度.
7.怎样才能使SQL语句在内存中被共用?要满足那几个条件?
SQL 在内存中,且 sql的大小写,表名和查询条件一致.
提高SQL内存共享,其实就是常说的SQL命中率,最能够提高命中率的方法是使用绑定变量。
从头说起吧
SQL语句的执行分为四步1分析2优化3行资源生成4语句执行,最耗时的就是优化这步,它又叫硬分析,在硬分析之前优化程序会在共享池中寻找是否有相同的SQL语句,如果找到就将硬分析改为软分析,这样就节省很多时间和资源,这就是平时执行同样的一句SQL第一次执行要比后几次执行慢很多的原因。
举个例子
set timing on
select * from big_table a where a.row='001';
执行N遍,我们发现执行时间如上所述,第一遍执行时间最长
但是如果将SQL的row='001'改为row='002'呢
结果很显然速度与原SQL的第一遍执行时间大致一样,因为在共享池中存储的SQL是row='001'那句而不是更改后的row='002'这句。
而如果改为绑定变量
select * from big_table a where a.row := row;
存在共享池中的SQL为select * from big_table a where a.row := row;所以不管row如何变化,每次执行的SQL都能跳过硬分析,换句话说就是提高命中率。