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索引失效
posted @ 2022-07-15 21:57  姬雨晨  阅读(39)  评论(0编辑  收藏  举报