达梦8 sql 语句查询优化

数据量不是很多 800W条。

in ( select  字段1 from  视图)  子查询语句, 用时 11秒

 

改成  inner join   视图,用时 3秒,

 

改成  inner join   物理表,关联两次 ,去掉嵌套查询,用时 1秒

 

几种写法差异很大,分析原因,具体看执行计划。执行计划是优化的重中之重,我们可以看到语句执行顺序,有没有走索引,检索的数据量等。这里不展开细说。

大致列几点:

1、视图烂用

我们都知道视图是虚拟表,使用视图查询数据时,数据库会从真实表中取出对应的数据。那么再过滤之前他会有一个 生产临时数据过程,如果数据量比较大会消耗过多时间。

2 、索引烂用

建立索引的规划:

  •   经常查询的列
  •  连接条件列
  • 谓词经常出现的列(where)
  • 查询是返回表的一小部分数据。

不适合做索引的情况:

  • 经常增删的列
  • 表的数据量小
  • 列上的有大量的null
  • 列上的数据有限(例如:报表种 index_name ,它只有5种类型) ,删除此索引后,速度提高了一半

3、 in  ( select 语句 少用)

  • Inner join 内连接,在两张表进行连接查询时,只保留两张表中完全匹配的结果集,达到和 select in 一样的效果

4、left join  语句

    把数据量少的表放到前面,有where条件的尽量放到左边处理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值