当前位置: 首页 > 知识 >正文

sql or 优化(oracle sql优化一般从那几个方面入手)

操作员优化

IN运算符

SQL用IN写的好处是写起来简单明了,比较适合现代软件开发的风格。

然而,带有IN的SQL的性能总是很低。从oracle执行的步骤中分析带IN的SQL与不带IN的SQL有以下区别:

ORACLE试图将其转换为多个表的连接。如果转换不成功,它将首先执行in中的子查询,然后查询外层表记录。如果转换成功,将通过多表连接直接查询。这表明SQL with IN至少有一个转换过程。

普通SQL可以转换成功,但是对于包含分组统计的SQL不能转换。

推荐方案:尽量不要在业务密集型SQL中使用IN操作符。

不在运算符中

强烈建议执行此操作,因为它无法应用表的索引。

推荐方案:用不存在或(外部连接判断为空)方案代替。

运算符(不等于)

并不意味着操作符永远不会使用索引,所以处理它只会产生一个全表扫描。

推荐方案:用其他功能相同的操作代替,比如

a0改为a0或A0。

将“更改为”

为空或非空操作(判断字段是否为空)

判断一个字段是否为空,一般不应用索引,因为B树索引不索引空值。

推荐方案:

将其替换为具有相同功能的其他操作,例如

If it is not empty, change it to a0 or a ""and so on.

该字段不允许为空,并使用默认值替换空值。例如,如果业务扩展应用程序中的状态字段不允许为空,则默认值为应用程序。

建立位图索引(不能建立带分区的表,位图索引很难控制。比如字段值太多,索引会降低性能,多人更新操作会增加数据块锁的现象)。

和运算符(大于或小于运算符)

大于或小于操作符一般情况下是不用调整的,因为它有索引就会采用索引查找,但有的情况下可以对它进行优化,如一个表有100万记录,一个数值型字段A,30万记录的A=0,30万记录的A=1,

39万记录的A=2,1万记录的A=3。那么执行A2与A=3的效果就有很大的区别了,因为A2时ORACLE会先找出为2的记录索引再进行比较,而A=3时ORACLE则直接找到=3的记录索引。

LIKE操作符

LIKE操作符可以应用通配符查询,里面的通配符组合可能达到几乎是任意的查询,但是如果用得不好则会产生性能上的问题,如LIKE ‘%5400%’ 这种查询不会引用索引,

而LIKE ‘X5400%’则会引用范围索引。一个实际例子:用YW_YHJBQK表中营业编号后面的户标识号可来查询营业编号YY_BH LIKE ‘%5400%’ 这个条件会产生全表扫描,

如果改成YY_BH LIKE ’X5400%’ OR YY_BH LIKE ’B5400%’ 则会利用YY_BH的索引进行两个范围的查询,性能肯定大大提高。

相关文章:
  • 7月13日基金净值:博时沪港深价值优选A最新净值1.1323,涨1.34%
  • 6月15日基金净值:华夏核心制造混合A最新净值0.9177,跌0.18%
  • 4月19日基金净值:易方达稳健增利混合A最新净值0.8642,跌0.81%
  • 6月15日基金净值:交银瑞思混合(LOF)最新净值1.1495,涨2.56%
  • 5月30日基金净值:创金合信新能源汽车股票A最新净值2.0785,涨0.31%
  • 3月30日基金净值:汇添富均衡增长混合最新净值0.588,涨0.87%_基金频道_证券之星
  • 5月19日基金净值:交银品质增长一年混合A最新净值0.9462,涨0.72%
  • Recv failure: Connection was reset
  • 4月3日基金净值:南方创新经济最新净值1.816,涨0.39%_基金频道_证券之星
  • 7月3日基金净值:银华富饶精选三年持有期混合最新净值0.6207,涨1.29%