常规的sql查询优化

一、最好查询语句中不要使用“*”来代替列名,而采用实际会用到的列名。

因为星号会查询一个表所有的列,这会消耗系统的查询时间

二、尽量减少表查询次数

三、用[not] exists 代替[not] in

四、创建索引(最好是给每个查询条件的相关列都创建一个索引)

(1)创建索引的语句:

 

create index index_name on table_name(column_name);

(2)监视索引(通过监视,可以知道哪些索引未被使用,可将这些索引删除)

 

语句:

alter index index_name monitoring usage;

 (3)检查索引使用情况

语句:

select * from v$object_usage;

 (4)删除索引语句

drop index index_name;

 五、选择驱动表(紧跟from之后的表,通常以全表扫描的方式被访问)

给驱动表创建索引

六、尽量避免全表扫描大表

以下情况,oracle会进行全表扫描

(1)所查询的表没有设置索引

(2)需要返回所有的行,带星号"*"

(3)带like并使用“%”这样的语句

(4)对索引主列有条件限制,但使用了函数

(5)带有is null 、is not null 或!=等字句也会导致全表扫描

七、注意where子句的连接顺序

由于oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其他where条件之前。那些可以过滤掉最大数据记录的条件必须写在where子句的末尾,也就是在进行表连接操作之前,过滤掉的记录数越多越好。

八、查看执行计划,根据执行计划进行的cost进行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值