玩转oracle之浅谈SQL优化

玩转oracle之浅谈SQL优化,第1张

玩转oracle之浅谈SQL优化 SQL优化总体原则

使用场景:SQL优化适用于大数据使用时

那些方面进行优化:

索引类型(普通索引,复合索引,全文索引等…)每个类型索引的特性是不一致的,因此使用索引前需要考虑,当前的表结构最佳适用于那个类型索引。

缓存:(数据库缓存,缓存中间件Redis)

锁机制:(读锁,写锁,行锁,页锁等各种类型的锁,oracle排它锁,共享锁)在加锁前,需要考虑当前业务,更加适用于那些锁。

表的设计:考虑三大范式(表的规范严格,但效率降低)因此需要权衡适用。一般在架构设计时,都需要权衡。

架构设计:读写分离(避免对全部数据进行加锁,而只是对少量的写 *** 作加锁),分库分表

9.5万读单独放到读数据库,0.5万写单独放在写数据库中,这样一样,就只需要对0.5万的写 *** 作进行加锁,用于防止并发冲突,而不需要对大量的9.5万读 *** 作进行加锁。

细节:char varchar varchar2 int mediumit ,对于一些相近的类型,需要权衡,那个更合适。 优化细节

基于oracle

不要让Oracle做的太多 jdbc-oracle

如果java调用数据库,能代码实现的尽量代码实现,不要让oracle做的太多。jdbc-oracle

把一些复杂 *** 作交给java,让sql语句尽可能的简单,避免一些复杂查询

尽量减少访问次数

避免使用(*)

需要什么查询什么,哪怕全字段查询(*也需要解析)

避免使用一些消耗资源的 *** 作

distinctunionominusintersectorder by

--尝试使用union all 替代union
--使用exists替代distinct

避免索引失效

在where后面使用了函数,计算,not ,is null,自动转换

--不要select ... from emp where sal > 2500*2;导致失效
--where sal is null;导致失效
--如果sal有索引则以上写法都会使sal索引失效

--select ...from emp where sal = '123'--转换会使索引失效

参考网址:https://www.yuque.com/gi4u62/ve67in/st6mri#be4e412d

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5700166.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存