WEB开发网
开发学院数据库Oracle SQL语句性能调整 阅读

SQL语句性能调整

 2007-05-06 12:05:38 来源:WEB开发网   
核心提示: 2、XISTS子句和IN子句带IN的关联子查询是多余的,因为IN子句和子查询中相关的操作的功能是一样的,SQL语句性能调整(3),如:select staff_name from staff_member where staff_id in (select staff_id from st

2、XISTS子句和IN子句

带IN的关联子查询是多余的,因为IN子句和子查询中相关的操作的功能是一样的。如:

select staff_name from staff_member where staff_id in (select staff_id from staff_func where staff_member.staff_id=staff_func.staff_id);

为非关联子查询指定EXISTS子句是不适当的,因为这样会产生笛卡乘积。如:

select staff_name from staff_member where staff_id

Exists (select staff_id from staff_func);

尽量不要使用NOT IN子句。使用MINUS 子句都比NOT IN 子句快,虽然使用MINUS子句要进行两次查询:

select staff_name from staff_member where staff_id in (select staff_id from staff_member MINUS select staff_id from staff_func where func_id like ‘81%’);

3、 任何可能的时候,用标准连接或内嵌视图改写子查询。

四、更新、插入、以及删除等DML语句的调整

1、DML语句是指用来执行更新、插入、以及删除等操作类型的语句。这些语句在结构上是很简单的,可调整的余地较小。性能低下的情况有:

插入缓慢并占有过多的I/O资源——这种情况主要是空闲列表(free list)中的数据块的空间过小,仅容的下较少的记录。

更新缓慢——这种情况主要是UPDATE操作扩展了一个VARCHAR2类型的列,而ORACLE被强制将内容迁移到其他数据块时。

删除缓慢——这种情况主要是记录被删除,ORACLE必须将数据块重新放置到空闲列表(free list)时。

因此,对DML进行调整,主要时利用对象存储参数和SQL之间的关系进行调整。

2、 CTFREE存储参数

PCTFREE存储参数告诉ORACLE什么时候应该将数据块从对象的空闲列表中移出。ORACLE的默认参数是PCTFREE=10;也就是说,一旦一个INSERT操作使得数据块的90%被使用,这个数据块就从空闲列表(free list)中移出。

上一页  1 2 3 4 5  下一页

Tags:SQL 语句 性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接