sql优化-0-SQL优化指导原则
SQL优化:大量数据时使用
哪些方面进行优化:
- 索引类型:普通索引、复合索引、全文索引等,每个类型索引的特性是不一致的,因此使用索引前
需要考虑,当前的表结构 最佳适用于那个类型索引。 - 缓存:数据库缓存、缓存中间件Redis
- 锁机制:排它锁、共享锁;读锁、写锁、行锁、页锁等各种类型的锁。在加锁前,需要考虑当前
业务,更加适用于哪些锁。 - 表的设计:三大范式可以提高规范性,但也会降低效率,因此需要权衡使用。
- 架构设计:读写分离(避免对全部数据进行加锁,而只是对少量的写操作加锁),9.5万读 单独放
到 读数据库,0.5万写 单独放在 写数据库中。这样一来,就只需要对0.5万的写操作进行加锁,用
于防止并发冲突,而不需要对大量的9.5万读操作进行加锁。分库分表 - 细节:char varchar varchar2,int,mediumint,对于相近的类型,需要权衡 哪个更合适。
一般在架构设计时,都需要进行"权衡"。到底使用哪种,必须根据经验、性能、压力测试。
基于oracle
- 不要让oracle做的太多,jdbc-oracle(把一些复杂操作交给iava去做);让sql语句尽可能的简单,避免一些复杂查询
- 尽量减少访问次数
- 避免使用"*",只挑选需要的字段查询
select * from student;
select id,name,age from student;
- 避免使用一些消耗资源的操作:distinct\union\minus\intersect\order by
例如可以使用union all替代union
使用exists替代distinct - 避免索引失效
避免在where,后面使用函数、计算、Not、is null、自动转换
例如,不要:select ... from emp where sal>2500*2 (这应该是sal*2 > 5000 才会索引失效) | where sal is null;select ... from emp where sal ='123'
如果sal有索引,则以上写法都会使sal索引失效
本文作者:jiyuchen1
本文链接:https://www.cnblogs.com/jiyuchen1/p/16482893.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!