一、【常规SQL语句优化】 truncate 写出存储过程动态删除表的SQL并加注释…
create or replace procedure trun_table(table_deleted in varchar2) as
–创建一个存储过程,传入一个表示表名称的参数,实现清空指定的表
cur_name integer;–定义内部变量,存储打开的游标
begin
cur_name := dbms_sql.open_cursor; --打开游标
dbms_sql.parse(cur_name,‘truncate table’||table_deleted||‘drop storage’,dbms_sql.native);
–执行truncate table tb_name的命令,实现清空指令的表
dbms_sql.close_cursor(cur_name); --关闭游标
exception
when others then dbms_sql.close_cursor(cur_name);–定义异常,出现异常时,关闭游标
raise;
end trun_table;
/
二、commit释放哪些资源?列出4条…
1、回滚段上用于恢复数据的信息,撤销表空间也只做短暂保留;
2、被程序语言获得的锁;
3、redo log buffer 中的空间;
4、oracle为管理上述资源的内部花费。
三、查询A和B表,A字段没索引,B字段有索引,哪个表作为驱动表比较合适?为什么?你能总结出什么?
B表作为驱动表比较合适
在执行ORACLE语句时,以从右到左的顺序处理表连接,因此应该将B表(即没有创建索引的表)放在from子句的最右边。
四、建索引事务基本原则?
1、以查询关键字为基础,表中的行随机排列;
2、包含的列数相对比较少的列;
3、表中的大多数查询都包含相对比较简单的where子句;
4、经常以查询关键字为基础的表,并且该表中的行遵从均匀分布;
5、缓存命中率低,并且不需要系统操作权限。
五、写出创建复合索引的示例SQL,并写出自己的总结…
create index complex_index on
tb_test(column1,column2,column3…)
建立索引时采用了几个列作为索引,则在使用时也要按照建立是的顺序来表述,即主列是最先被选择的列。
六、查看整车测试数据库,找出一个你认为需要建立复合索引的表,并给出SQL代码…
七、explain plan 优化器的作用是什么?
Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径。从而使我们选择最优的查询方式达到最大的优化效果。