oracle查询怎样更效率,Oracle提高查询效率的方法

本文介绍了优化SQL语句的几种方法,包括避免使用NOTIN操作符,选择合适的连接方式,注意UNION与UNION ALL的区别,减少不必要的查询行和列,谨慎使用视图,合理创建索引,优化参数大小,以及利用 BETWEEN 而非 IN 操作提高查询效率。通过这些技巧,可以显著提升数据库查询性能。
摘要由CSDN通过智能技术生成

优化SQL语句的若干方法

1、操作符号:NOT IN操作符

此操作是强列推荐不使用的,因为它不能应用表的索引。

推荐方案:用NOT EXISTS 或(外连接+判断为空)方案代替"IS NULL", "<>", "!=", "!>", "!

因为他们不走索引全是表扫描。

NOT IN会多次扫描表,

使用EXISTS、NOT EXISTS、IN、LEFT OUTER JOIN来替代,特别是左连接, 而Exists比IN更快,最慢的是NOT操作。

使用in时,在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,这样可以减少判断的次数

2、注意union和union all的区别。union比union all多做了一步distinct操作。能用union all的情况下尽量不用union。

3、查询时尽量不要返回不需要的行、列。另外在多表连接查询时,尽量改成连接查询,少用子查询。

4、尽量少用视图,它的效率低。对视图操作比直接对表操作慢,可以用存储过程来代替它。特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料的难度。

我们看视图的本质:它是存放在服务器上的被优化好了的已经产生了查询规划的SQL。对单个表检索数据时,不要使用指向多个表的视图,

直接从表检索或者仅仅包含这个表的视图上读,否则增加了不必要的开销,查询受到干扰.

5、创建合理的索引,对于插入或者修改比较频繁的表,尽量慎用索引。因为如果表中存在索引,插入和修改时也会引起全表扫描。

索引一般使用于where后经常用作条件的字段上。

6、在表中定义字段或者存储过程、函数中定义参数时,将参数的大小设置为合适即可,勿设置太大。这样开销很大。

7、Between在某些时候比IN速度更快,Between能够更快地根据索引找到范围。select * from chineseresume where title in ('男','女')

Select * from chineseresume where between '男' and '女'是一样的。

由于in会在比较多次,所以有时会慢些。

8、ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名

例如:表TAB1 16,384 条记录

表TAB2 1 条记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值