`
kidiaoer
  • 浏览: 822420 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Sql优化总结

阅读更多
Sql优化总结:


1.SQL优化基本原则:
1.合理使用索引;2.使用合理的表连接方式;3.降低逻辑读;4.减少不必要的排序;5.减少重分析。

2.SQL语句处理一共分为6步:
1.Open cursor 2.Parse 3.Bind variables 4.Execution 5.Fetch 6.Close cursor.

3.优化SQL语句的第一原则就是减少硬解析,尽量保证代码重用,这样做的好处:
1.减少因过多硬解析带来的CPU资源占用。
2.减少对Library Cache的需求量。
3.减少Shared Pool Latch的发生;

4.绑定变量可以减少硬解析,但是不是所有语句都适合使用绑定变量。例如某些列值分布不均匀的字段,如果使用绑定变量,反而可能产生执行计划选择错误的情况。原因:采用绑定变量之后,系统会复用执行计划,这样就不会关心所给定的变量值在表中的分布情况,例如一个字段有50个值,其中value=1的值有 100条,占1%,而value=2的值5000条,占50%,此时如果使用绑定变量,则value=1和value=2所使用的执行计划相同,必然会影响执行效率,会造成执行效率不稳定(因为不是最优)。

5.优化器:Optimizer.是一组Oracle的内部例行程序,用于决定一条SQL语句怎样最优执行。对于用户来讲,优化器是透明的。可以通过 explain plan /set autotrace /set event 10046等方式来查看SQL语句的执行计划。
Oracle 9i支持CBO和RBO,如果某给某个表执行了统计信息,则会采用CBO(基于成本的优化),如果某表没有统计信息,则基于RBO进行优化,RBO优化则主要根据SQL语句的书写水平所决定,比如小表,中间表,查询条件顺序等,遵循从右至左,从下到上的顺序。
Oracle 10g已经放弃RBO,而全部采用CBO。CBO的执行计划选择的成功率能达到95%以上。而且CBO基本上不对SQL语句的书写要求很严格,CBO只依赖于统计数据,只要统计数据准确,一般都会选择出比较优化的执行计划。

6.可以通过查询V$SQL_PLAN 查看某一条SQL语句的执行计划。(可以分析别人的SQL语句)。

7.索引是有序的,其包括跟节点,分支节点,叶子节点。读取索引时,每个跟、分支、和叶子节点都要进行一次独立的IO操作。索引的使用方法是:首先通过关键字在索引中查找(如果是b-tree索引,会从跟节点开始一级一级的向下查找),找到索引块后,获取Rowid,然后再根据Rowid读取数据块,当所有数据获取完成之后,将结果集返回。也就是说,在这个过程中,使用一个索引至少要执行3次IO读取(跟、分支、节点),然后还要根据Rowid去读取数据块;当进行全表扫描所产生的IO少于通过索引获取数据产生的IO时,CBO会自动选择Full table scan。

8.Fast Index scan是指通过索引就可以直接返回结果。因为要查询的列是索引列,不需要再读取对应的数据块。

9.当索引过于分散时,要考虑重建索引。
判断索引是否分散,可以执行下面的SQL语句:
SELECT (DEL_LF_ROWS_LEN/LF_ROWS_LEN) * 100 AS WASTAGE FROM INDEX_STATS;
IF WASTAGE > 20% THEN ALTER INDEX INDEX_NAME REBUILD;

10.BITMAP索引。原理、特点、适用环境、优点、缺点。

11.一般来说Sort merge join效率最低 , Nested Loop Join 效率一般, Hash Join效率较高。也有特例,加入两个表已经是排好顺序的,则sort merge join效率较高;又或者两个表都很小Nested Loop效率较高;如果是大表操作,则hashjoin效率较高。

12.Oracle收集的统计信息包括表、索引和列。其中收集表的信息包括记录数,平均行长度,行迁移数量、行连接数量、平均可用的空闲空间 (DBA_TABLES);索引:包括索引BLEVEL(越高效率越低),索引叶子节点数量、每个关键字的平均叶子块数、每个关键字的平均数据块数、索引记录数、索引块和唯一值数、聚簇因子(DBA_INDEXES);列:最大值,最小值等,唯一值数(USER_TAB_COL_STATISTICS)。

13.ORACLE hits。



分享到:
评论

相关推荐

    SQL优化总结,很实用

    以下是对SQL优化的总结,主要聚焦于Oracle数据库的SQL语句调优。 1. **理解执行计划**:优化SQL的第一步是理解查询的执行计划。Oracle的`EXPLAIN PLAN`可以展示SQL执行的步骤,包括表扫描方式、连接顺序、索引使用...

    【整理】数据库面试题索引sql优化+数据库SQL优化总结之百万级数据库优化

    接下来,"数据库SQL优化总结之百万级数据库优化.pdf"可能深入到实际的优化实践。 1. **数据库架构设计**:在百万级数据量下,合理的设计能避免性能瓶颈,如垂直分割、水平分割,以及读写分离策略。 2. **缓存与...

    SQL优化总结

    ### SQL优化总结 #### 一、SQL优化的重要性 在数据库应用中,SQL查询性能的优劣直接影响着应用程序的响应时间和用户体验。高效的SQL查询不仅能够提升系统整体性能,还能减少服务器资源消耗,降低运营成本。因此,...

    SQL优化总结.xmind

    SQL优化总结.xmind

    SQL语句优化总结

    SQL语句优化是一项重要的数据库管理技能,能够显著提高数据库查询性能,减少资源消耗,缩短响应时间。以下是对上述文件内容中提及的关键知识点的详细总结: 1. 选择最有效的表名顺序 在使用基于规则的优化器时,...

    Oracle数据库SQL优化总结

    Oracle数据库SQL优化是一个关键的技能,对于提升数据库性能和应用响应速度至关重要。以下是一些针对非DBA的Oracle SQL优化技巧: 1. **选择最有效的表名顺序**:在FROM子句中,应将记录最少的表放在最前面,基础表...

    数据库sql优化总结

    SQL语句操作,消耗了70%~90%的数据库资源; 独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低;

    SQL优化经验总结34条.pdf

    ### SQL优化经验总结34条 #### 一、选择最有效率的表名顺序 - **要点**: 在基于规则的优化器(RBO)中,Oracle解析器从右至左处理FROM子句中的表名。为了提高性能,应将记录条数最少的表放在最后,即作为基础表。...

    SQL优化总结.docx

    SQL优化是数据库性能提升的关键环节,它涉及到查询速度、资源消耗和系统稳定性等多个方面。以下是一些关于SQL优化的关键知识点: 1. **索引优化**: - 索引的合理使用至关重要,应确保主要的查询条件字段都有索引...

    sql 优化个人总结

    sql优化总结,对sql 优化在实战中对于sql优化的浅显理解,大神勿喷。

    sql优化经验总结

    通过阅读"sql优化经验总结V1.5.ppt"和"sql优化经验总结.ppt",可以更深入地学习到更多实用技巧和案例分析,进一步提升在Oracle SQL优化方面的能力。不断学习和实践,才能在这个领域取得更大的成就。

    数据库SQL优化大总结之 百万级数据库优化方案.pdf

    数据库SQL优化大总结之百万级数据库优化方案 本文总结了数据库SQL优化的十一个重要知识点,以帮助开发者提高SQL查询效率,避免全表扫描。 一、数据库SQL优化之索引优化 1. 在where及order by涉及的列上建立索引,...

    SQL优化经验总结34条

    ### SQL优化经验总结34条深度解读 #### (1) 最优表名顺序:提升查询效率 在基于规则的优化器中,Oracle按照从右至左的顺序处理FROM子句中的表名。为了提高查询效率,应将记录条数最少的表置于FROM子句的最后,作为...

    收获不止SQL优化

    16.4.2 优化总结 445 16.5 本章习题、总结与延伸 446 第17章 总结与延伸:从勿信讹传到洞若观火 447 17.1 SQL优化的各个误区 447 17.1.1 COUNT(*)与COUNT(列)的传言 447 17.1.2 谈SQL编写顺序之流言蜚语 451 ...

    通过分析SQL语句的执行计划优化SQL(总结)

    这篇博客"通过分析SQL语句的执行计划优化SQL(总结)"深入探讨了这一主题,下面将对其中的主要知识点进行详细阐述。 1. **执行计划的理解**: 执行计划是数据库管理系统在执行SQL语句之前预先生成的一种详细步骤,它...

    收获,不止SQL优化--抓住SQL的本质1

    - **全书总结**:本书不仅是一本关于SQL优化的技术书籍,更是引导读者进入SQL优化世界的指南。通过丰富的案例、实战经验和深入的技术探讨,帮助读者建立起从宏观到微观的优化思路,并最终达到“爽”的境界。 - **...

Global site tag (gtag.js) - Google Analytics