.比较truncate 和 delete 命令?
2.如何查找重复记录
3.如何删除重复记录?
4.写一个删除表A,再创建表的脚本.其中至少有两个字段,可随意取名?
5.写一个存储过程,传入参数为:20050901字符串,要输出为2005-9-14的日期型.)
6.使用索引的理由?
7.怎样才能使SQL语句在内存中被共用?要满足那几个条件?
8.解释data block,extent 和segment 的区别?
9.解释冷备份和热备份的不同点以及各自的优点

解决方案 »

  1.   

    5.写一个存储过程,传入参数为:20050901字符串,要输出为2005-9-14的日期型.)
    select to_date('20050901','yyyy-mm-dd') from dual;类似的过程6.使用索引的理由?提高访问速度
    解释冷备份和热备份的不同点以及各自的优点冷备份需要关机 热备份可以在线  呵呵 我就知道这么点 大家一起了
      

  2.   

    1、1) truncate 不能回滚,因此不能放到事务中使用。delete可以。
       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)
      

  3.   

    4、drop table A;
       create table b( a varchar2(30), b varchar2(30);
      

  4.   

    4、drop table A;
       create table b( a varchar2(30), b varchar2(30);
      

  5.   

    6.使用索引的理由?
       加快查询速度.
    7.怎样才能使SQL语句在内存中被共用?要满足那几个条件?
       SQL 在内存中,且 sql的大小写,表名和查询条件一致.
      

  6.   

    我帮你回答一下第7个问题。
    提高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都能跳过硬分析,换句话说就是提高命中率。