SQL 优化

SQL 优化

1、一般的sql优化技巧

* 避免使用“*”替代所有列         --清晰列,避免Oracle分析 *

一条SQL的执行分3步:  语法分析与编译、执行、存取数据。

* TRUNCATE 代替 DELETE

* 在确保完整性的情况下,多用COMMIT语句

* 尽量减少表的查询次数

SQL>select tname from teacher

    where tid = (select tid from student wheresname=’杨小七’);  --两次查询表

SQL>select tname from teachert

           full jion student s ont.tid=s.tid

                wheres.sname=’杨小七’;       --一次查询。

* EXISTS替代IN

* WHERE 替代 HAVING

* 用“<=”替代“<”

1.2 表连接

* 选择 FROM表的顺序。---解析表时,从右到左,最后一个表为驱动表,选记录最少的作驱动表

* WHERE 子句的连接顺序。--自下而上解析,能过滤掉大数据量的放在末尾。

* 使用表的别名。   --减少Oracle解析。

1.3 有效使用索引

* 使用索引的基本事项

       使用索引的确快,但是索引要占据存储空间,需要进行定期维护,每当表中有记录增减或索引列被修改时,索引本身也会被修改。这就意味着:每条记录的INSERT、DELETE、UPDATE操作都要使用更多的磁盘I/O 

       而且很多应经不必要的索引,甚至会影响查询效率。

* 避免对索引列使用 NOT

* 避免对 唯一索引列 使用 IS (NOT) NULL

* .选择 复合索引 主列

       @ 选择经常在 WHERE 子句中使用且由 AND 操作符连接的列作为复合索引列。

       @ 选择 WHERE 子句中使用频率相对较高的列 作为复合索引的主列。

            例如,如果 orgId列 的使用频率 比 deptId 高,那么创建索引时 orgId应该在前

* .监视索引是否被使用

    因为不必要的索引会起负作用。

--添加监视

system@SDROLUN>alter indexidx_ename monitoring usage;

索引已更改。

--通过 V$OBJECT_USAGE 视图来了解该索引的使用状态

system@SDROLUN>selecttable_name, index_name, monitoring from v$object_usage;

TABLE_NAME                    INDEX_NAME                    MON
------------------------------ ---------------------------------
EMPLOYEE                      IDX_ENAME                     YES

* .

* .

前一篇: 数据库对象类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值