sql优化法则

优化法则

  1. 减少数据访问(磁盘访问)
  2. 返回更少数据(减少网络传输或磁盘访问)
  3. 减少交互次数(减少网络传输)
  4. 减少服务器CPU开销
  5. 利用更多资源

数据库访问优化法则

创建并正确使用索引
1. 分类:

B-TREE索引、位图索引、全文索引

2. 不能使用索引的情况:

“<>”、"not in “、函数或运算(function、 +)、模糊查询"like”、“is null”、 非未知字段。

3. 创建索引的条件:
  • 字段出现在查询条件中
  • 语句执行频率高
  • 通过字段条件可筛选的记录集很小
    例如:
    主外键、有身份标识和意义的字段

返回更少的数据

分页
客户端分页
应用服务器分页
数据库sql 分页
只返回需要的字段

去除不必要的字段提高性能、

优点:

  1. 减少数据在网络上传输开销
  2. 减少服务器数据处理开销
  3. 减少客户端内存占用
  4. 字段变更时提前发现问题,减少程序BUG
  5. 如果访问的所有字段刚好在一个索引里面,则可以使用纯索引访问提高性能。

缺点:

增加编码工作量

减少交互次数

batchDML

进行批量提交。减少客户-服务端的交互次数,从而减少多次交互的网络延时开销,降低CPU开销。

使用存储过程

将业务逻辑封装在存储过程中,在客户端直接调用存储过程处理,减少网络交互成本。

缺点:

  1. 不可移植性
  2. 学习成本高
  3. 业务逻辑多处存在
  4. 语法函数不能满足
  5. 如果运算复杂,增加数据库服务端的处理成本。
  6. 变更问题。

建议: 尽量不适用。常用在报表统计 ETL任务中。

减少数据库服务器CPU运算

预编译sql

采用预编译的写法,可以:

  1. 防止sql注入
  2. 提高sql可读性
  3. 提高sql解析性能。
合理使用排序

如果你的两个表连接的条件都是等值运算,那可以采用Hash Join来提高性能,因为Hash Join使用Hash 运算来代替排序的操作。具体原理及设置参考SQL执行计划优化专题。

减少比较操作
  1. Like 模糊查询 是全表查询
  2. in List
复杂运算在客户的处理

利用更多资源

客户端多进程访问

多线程

数据库并行处理

ORAClE 性能优化

sql性能优化

  1. 尽量使用列名替代*
  2. Where 语句的解析顺序是从右向左的
  3. 尽量使用where替代having
  4. 尽量使用多表查询替代子查询
  5. 尽量使用绑定
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值