SQL优化之统计信息和索引

本文探讨了SQL优化中的统计信息和索引的重要性。统计信息对CBO优化器选择最优执行路径至关重要,而动态采样可能导致额外资源消耗。建议定期收集统计信息,并给出了收集示例。同时,合理使用索引能显著提升查询性能,但也需要注意过度使用可能带来的负面影响,如DML操作速度降低。创建索引时应考虑WHERE子句、排序需求、列的唯一性和数据量等因素。
摘要由CSDN通过智能技术生成

大部分情况下的sql优化的场景,都是发生在我们想让我们的sql语句运行的更快一点,这个时候我们往往会采取一些“措施”调整sql的执行路径以便它们能更快的运行结束。

刚入dba行业,常常听到导师和我说的一句话“20%的sql优化技能就能优化80%的sql性能问题”。大部分情况下sql优化并不复杂,而很关键的一步是我们能不能发现问题,然后才能对症下药。今天我们先从sql优化中的统计信息、索引这2个方面来学习了解一下sql。

对于cbo模式,统计信息极为重要,这是影响sql语句执行的一个重要的因素。对于数据变化量大的数据库,会很容易出现统计信息过旧的问题即系统记录的表信息和实际表的信息不一致。那么优化器在选择最优执行路径的时候就可能选择不合适的执行路径(非最优路径)。所以我们一线运维常常需要定期的收集统计信息。那么问题来了,统计信息收集依据呢?

既然要收集,那么很多时候我们可以通过dba_tables视图中的LAST_ANALYZED字段看看上一次的收集日期,做个是否有必要做统计收集的预判断。

sys@RAC>alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';

Session altered.    

sys@RAC>select owner,TABLE_NAME,LAST_ANALYZED from dba_tables where table_name='T1';

OWNER                TABLE_NAME           LAST_ANALYZED
-------------------- -------------------- -------------------
TEST                 T1                   2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值