大sql如果不能加索引,还能怎么优化 —— hint学习

大sql如果不能加索引,还能怎么优化

当前问题:
要执行简单查询sql 【select 字段1,字段2,……,字段40 from 表 where条件 group by 字段1,字段2,……,字段40】,但对应表里数据量大,且查询字段和group by字段是由动态配置的,于是这里不方便加索引,普通查询耗时2个小时以上。
解决方案:
这里便用hint的并行解决,新的sql【select /*+parallel(8) */ 字段1,字段2,……,字段40 from 表 where条件 group by 字段1,字段2,……,字段40】,减少了查询时间,用资源换时间。

以下来自于网络总结:
用hint提高并行度,并行(parallel)处理。
使用方式 select /*+parallel(4) */ 字段 from 表(其中4是并行数,可以适当增加或减小)
数据库并行处理是指客户端一条SQL的请求,数据库内部自动分解成多个进程并行处理。
并行的优点:
使用多进程处理,充分利用数据库主机资源(CPU,IO),提高性能。
并行的缺点:
1、单个会话占用大量资源,影响其它会话,所以只适合在主机负载低时期使用;
2、只能采用直接IO访问,不能利用缓存数据,所以执行前会触发将脏缓存数据写入磁盘操作。
注:
1、并行处理在OLTP类系统中慎用,使用不当会导致一个会话把主机资源全部占用,而正常事务得不到及时响应,所以一般只是用于数据仓库平台。
2、一般对于千万级记录以下的小表采用并行访问性能并不能提高,反而可能会让性能更差。

· 并行度的选择:并行度一般使用2的幂,如2、4、8、16等。通常情况下,不建议将并行度设置得太高,最多不要超过32。特殊情况下,如果需要非常高的响应速度,可以适度提高并行度,但需要注意控制并发数量,以免耗尽并行资源。

hint说明:
hint是一种基于代价的优化器,在绝大多数情况下会选择正确的优化器,减轻DBA的负担。但是有时候会选择效率很差的执行计划,使某个语句变得很慢,此时就需要DBA认为干预,告诉优化器使用指定的存取路径或者连接类型生成执行计划&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值