SQL语句优化
复杂sql优化的方法及思路

复杂sql优化的方法及思路复杂SQL优化的方法及思路在实际的开发中,我们经常会遇到需要处理大量数据的情况,而这些数据往往需要通过SQL语句进行查询、统计、分析等操作。
然而,当数据量变得越来越大时,SQL语句的执行效率也会变得越来越低,这时就需要进行SQL优化来提高查询效率。
下面介绍一些复杂SQL 优化的方法及思路。
1. 索引优化索引是提高SQL查询效率的重要手段之一。
在使用索引时,需要注意以下几点:(1)选择合适的索引类型:根据查询条件的特点选择合适的索引类型,如B-Tree索引、Hash索引、全文索引等。
(2)避免过多的索引:过多的索引会降低SQL语句的执行效率,因为每个索引都需要占用一定的存储空间,并且在更新数据时需要维护索引。
(3)避免使用不必要的索引:有些查询条件并不需要使用索引,因此在编写SQL语句时需要避免使用不必要的索引。
2. SQL语句优化SQL语句的优化是提高查询效率的关键。
在编写SQL语句时,需要注意以下几点:(1)避免使用子查询:子查询会增加SQL语句的复杂度,降低查询效率。
可以使用JOIN语句代替子查询。
(2)避免使用OR操作符:OR操作符会使SQL语句的执行计划变得复杂,降低查询效率。
可以使用UNION操作符代替OR操作符。
(3)避免使用LIKE操作符:LIKE操作符会使SQL语句的执行计划变得复杂,降低查询效率。
可以使用全文索引代替LIKE操作符。
3. 数据库结构优化数据库结构的优化也是提高查询效率的重要手段之一。
在设计数据库结构时,需要注意以下几点:(1)避免使用过多的表:过多的表会增加SQL语句的复杂度,降低查询效率。
可以使用视图代替多个表。
(2)避免使用过多的字段:过多的字段会增加SQL语句的复杂度,降低查询效率。
可以使用分表代替过多的字段。
(3)避免使用过多的关联:过多的关联会增加SQL语句的复杂度,降低查询效率。
可以使用冗余字段代替过多的关联。
复杂SQL优化需要从索引优化、SQL语句优化和数据库结构优化三个方面入手,通过合理的优化手段提高查询效率,从而提高系统的性能和稳定性。
sql server 语句优化题目

题目:SQL Server 语句优化随着数据量的增加和数据库应用的复杂化,SQL Server 数据库在使用过程中可能会出现性能下降的情况,而对于性能下降的根本原因通常可以追溯到 SQL 语句的性能不佳。
对 SQL Server 数据库中的 SQL 语句进行优化显得尤为重要。
本文将从 SQL 语句的优化方法、常见优化技巧和注意事项等方面展开探讨。
一、SQL 语句优化的方法1. 了解执行计划在进行 SQL 语句优化时,首先需要了解 SQL 语句的执行计划。
执行计划是 SQL Server 生成的一份详细的指导书,用于指导 SQL Server 如何执行查询。
通过查看执行计划,可以清晰地了解 SQL 语句的执行过程,找到执行效率低下的地方并进行相应的优化。
2. 使用索引索引是提高 SQL 查询效率的重要手段之一。
在 SQL 查询过程中,如果涉及到大量的数据表,没有索引的情况下,数据库引擎将对整个数据表进行扫描,导致查询性能低下。
正确使用索引可以大大提高 SQL 查询的效率。
但是,过多的索引也可能会导致性能下降,因此需要根据实际情况进行合理的索引设计和使用。
3. 优化 SQL 语句在编写 SQL 语句时,应尽量避免使用 SELECT *,而是明确指定需要查询的字段,减少不必要的数据传输和计算。
尽量将复杂的逻辑操作放到数据库层面完成,减少数据传输和网络开销,提高查询效率。
二、常见的 SQL 语句优化技巧1. 避免在 WHERE 子句中使用函数在 SQL 查询中,如果在 WHERE 子句中使用了函数,数据库引擎会对每一条记录都进行函数的计算,导致查询性能低下。
应尽量避免在WHERE 子句中使用函数,可以通过其他方法来达到相同的查询效果。
2. 使用 UNION ALL 替代 UNION在 SQL 查询中,如果使用 UNION 进行多个查询结果的合并,数据库引擎会进行重复数据的去重操作,导致性能下降。
而使用 UNION ALL 则可以避免重复数据的去重操作,提高查询效率。
sql优化常用面试题

sql优化常用面试题SQL优化是数据库开发和维护中非常重要的一项工作。
在面试过程中,面试官通常会提出一些与SQL优化相关的问题,以下是一些常见的SQL优化面试题:1. 如何进行SQL优化?SQL优化可以通过以下几个方面实现:1.1. 索引优化:合理创建索引并保证索引的使用;1.2. 查询优化:使用合适的查询语句、减少不必要的查询、优化查询条件和排序等;1.3. 数据库设计优化:合理设计数据库结构,避免冗余字段和表,减少数据的存储和检索;1.4. 优化表结构:适当分割数据表,避免表过大,减少数据操作的时间;1.5. SQL语句优化:合理编写SQL语句,避免使用子查询、JOIN 操作等可能导致性能下降的语句。
2. 什么是索引?为什么要使用索引?索引是一种数据结构,用于加快数据库的检索速度。
通过将特定列上的索引值与实际数据进行映射,可以快速定位到包含指定数据的记录,提高查询效率。
索引的使用可以带来以下优点:- 加快数据检索速度:通过索引,数据库可以直接访问到符合查询条件的数据,加快查询速度;- 提高查询性能:索引可以减少数据库的扫描操作,降低系统资源的占用;- 支持唯一性约束:通过创建唯一索引,可以确保数据表中某些列的唯一性;- 支持排序:通过创建排序索引,可以直接按照索引顺序返回数据。
3. 什么是SQL执行计划?SQL执行计划是数据库执行SQL语句时生成的一种执行计划,用于指导数据库如何执行SQL查询。
执行计划是由数据库的查询优化器生成的,它会根据表结构、索引情况等因素评估查询的成本,并生成一种最优的执行计划。
SQL执行计划包括了查询语句的扫描方式、连接类型、索引使用情况等信息,有助于分析查询的性能瓶颈以及优化性能。
4. 如何通过查看SQL执行计划来进行优化?通过查看SQL执行计划,可以获取查询语句的执行细节,从而进行性能优化。
4.1. 扫描方式优化:通过查看执行计划中的扫描方式,可以了解查询是如何扫描表的(全表扫描、索引扫描等),针对不同的扫描方式,可以针对性地进行优化,如创建合适的索引、优化查询条件等。
sqlsqerver语句优化方法

sqlsqerver语句优化方法SQL Server是一种关系型数据库管理系统,可以使用SQL语句对数据进行操作和管理。
优化SQL Server语句可以提高查询和操作数据的效率,使得系统更加高效稳定。
下面列举了10个优化SQL Server语句的方法:1. 使用索引:在查询频繁的列上创建索引,可以加快查询速度。
但是要注意不要过度索引,否则会影响插入和更新操作的性能。
2. 避免使用SELECT *:只选择需要的列,避免不必要的数据传输和处理,提高查询效率。
3. 使用JOIN替代子查询:在进行关联查询时,使用JOIN操作比子查询更高效。
尽量避免在WHERE子句中使用子查询。
4. 使用EXISTS替代IN:在查询中使用EXISTS操作比IN操作更高效。
因为EXISTS只需要找到一个匹配的行就停止了,而IN需要对所有的值进行匹配。
5. 使用UNION替代UNION ALL:如果对多个表进行合并查询时,如果不需要去重,则使用UNION ALL操作比UNION操作更高效。
6. 使用TRUNCATE TABLE替代DELETE:如果要删除表中的所有数据,使用TRUNCATE TABLE操作比DELETE操作更高效。
因为TRUNCATE TABLE不会像DELETE一样逐行删除,而是直接删除整个表的数据。
7. 使用分页查询:在需要分页显示查询结果时,使用OFFSET和FETCH NEXT操作代替传统的使用ROW_NUMBER进行分页查询。
这样可以减少查询的数据量,提高效率。
8. 避免使用CURSOR:使用游标(CURSOR)会增加数据库的负载,降低查询效率。
如果可能的话,应该尽量避免使用游标。
9. 使用参数化查询:使用参数化查询可以减少SQL注入的风险,同时也可以提高查询的效率。
因为参数化查询会对SQL语句进行预编译,可以复用执行计划。
10. 定期维护数据库:定期清理过期数据、重建索引、更新统计信息等维护操作可以提高数据库的性能。
如何进行SQL调优

如何进行SQL调优SQL调优是优化数据库性能的一个重要步骤。
通常情况下,优化SQL查询的效率会使整个系统的性能得到提升。
在这篇文章中,我们将探讨如何进行SQL调优。
一、分析SQL语句首先,我们需要分析SQL查询语句。
如果SQL查询不正确或不充分,则不可能实现有效的调优。
我们需要了解查询的目的、查询的表、所需的数据以及查询的条件等等。
在分析查询语句时,我们需要关注以下几个方面:1.查询完成的时间是否满足需求;2.过滤条件是否合适;3.表之间的关系是否正确;4.是否使用了合适的索引;5.查询中使用了哪些函数;6.是否将复杂的查询分解为简单的查询;7.是否存在重复数据;8.是否使用了动态语句。
二、优化数据表结构第二个优化策略是优化数据表结构。
优化数据表结构可以使查询更快并减少查询时间。
以下是一些优化数据表结构的建议:1.将表拆分为更小的表;2.对于大型的表,可以使查询更快,更好地维护和管理;3.添加数据到表中时,使用批量插入而不是单独插入;4.为表的主键添加索引;5.使用适当的数据类型;6.删除不必要的列;7.标准化表设计。
三、使用优化查询技术第三个优化策略是使用优化查询技术。
以下是一些优化查询技术的建议:1.使用预编译语句;2.使用存储过程;3.将大的表拆分为小表;4.优化查询过程中使用的函数;5.范围查询的优化技术;6.优化复杂查询;7.熟悉查询缓存的工作原理;8.使用正确的JOIN语句。
四、使用合适的索引使用合适的索引是第四个优化策略。
索引是用于查找表中数据的一种结构。
以下是一些使用索引的建议:1.只有在需要时才使用索引;2.使用准确性为索引提供数据;3.使用索引可以使查询更快,但也会增加插入和修改的时间;4.对于大型表,使用索引可以显著提高性能;5.使用覆盖索引;6.避免使用不规范的索引;7.使用联合索引;8.使用优化查询缓存。
五、优化数据库服务器优化数据库服务器是第五个优化策略。
以下是一些优化服务器的建议:1.选择正确的硬件;2.选择正确的操作系统;3.使用正确的配置参数;4.配置正确的缓存大小;5.使用内存表代替磁盘表;6.合理设置自动增量字段;7.优化写和读的优化区域;8.备份和压缩数据。
sql长语句

sql长语句在数据库开发和管理中,SQL语句是一种用于与数据库交互的编程语言。
在日常的数据库操作中,我们常常会遇到一些较长的SQL语句,这些长语句可能是由于复杂的业务逻辑或者多表关联而导致的。
本文将探讨长SQL语句的特点、使用注意事项以及优化方法。
一、长SQL语句的特点长SQL语句通常具有以下几个特点:1. 复杂性:长SQL语句往往包含多个表的连接、子查询、函数调用等复杂的操作,使得语句的逻辑较为复杂。
2. 冗余性:长SQL语句可能包含大量的冗余代码,例如重复的函数调用、重复的子查询等,这些冗余会导致语句效率降低。
3. 可读性差:由于语句过长,很难一眼看清其逻辑和结构,给后续维护和调试带来困难。
4. 执行时间长:长SQL语句的执行时间通常较长,容易造成数据库性能问题。
二、使用长SQL语句的注意事项在使用长SQL语句进行数据库操作时,需要注意以下几个问题:1. 可维护性:长SQL语句的可读性差,因此在编写时需要注重代码缩进、换行和注释,使其结构更加清晰,方便后续维护和调试。
2. 性能优化:长SQL语句执行时间长,容易影响数据库性能。
可以通过合理设计数据库表结构、创建索引、优化查询语句等手段提升性能。
3. 容错处理:长SQL语句可能会因为表名、字段名写错或者表结构变更而报错。
需要做好异常处理,避免数据库操作失败。
4. SQL注入:长SQL语句容易受到SQL注入攻击。
在构造SQL语句时,需要对输入的参数进行合法性检查和转义,避免潜在的安全风险。
三、优化长SQL语句的方法针对长SQL语句存在的问题,我们可以采用以下几种优化方法:1. 分解长SQL语句:将长SQL语句拆分成多个较短的语句,可以提高可读性和维护性。
例如,将复杂的查询拆分成多个子查询或者使用临时表进行中间结果存储。
2. 使用WITH子句:WITH子句可以在查询中定义临时表,然后在查询中引用这些临时表,提高可读性和可维护性。
3. 减少冗余代码:通过合理设计数据库表结构,减少不必要的冗余字段和冗余数据。
SQL优化工具及使用技巧介绍

SQL优化工具及使用技巧介绍SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。
它可以让我们通过向数据库服务器发送命令来实现数据的增删改查等操作。
然而,随着业务的发展和数据量的增长,SQL查询的性能可能会受到影响。
为了提高SQL查询的效率,出现了许多SQL优化工具。
本文将介绍一些常见的SQL优化工具及其使用技巧。
一、数据库性能优化工具1. Explain PlanExplain Plan是Oracle数据库提供的一种SQL优化工具,它可以帮助分析和优化SQL语句的执行计划。
通过使用Explain Plan命令,我们可以查看SQL查询的执行计划,了解SQL语句是如何被执行的,从而找到性能瓶颈并进行优化。
2. SQL Server ProfilerSQL Server Profiler是微软SQL Server数据库管理系统的一种性能监视工具。
它可以捕获和分析SQL Server数据库中的各种事件和耗时操作,如查询语句和存储过程的执行情况等。
通过使用SQL Server Profiler,我们可以找到数据库的性能瓶颈,并进行相应的优化。
3. MySQL Performance SchemaMySQL Performance Schema是MySQL数据库提供的一种性能监视工具。
它可以捕获和分析MySQL数据库中的各种事件和操作,如查询语句的执行情况、锁的状态等。
通过使用MySQL Performance Schema,我们可以深入了解数据库的性能问题,并对其进行优化。
二、SQL优化技巧1. 使用索引索引是提高SQL查询性能的重要手段之一。
在数据库中创建合适的索引可以加快查询操作的速度。
通常,我们可以根据查询条件中经常使用的字段来创建索引。
同时,还应注意索引的维护和更新,避免过多或过少的索引对性能产生负面影响。
2. 避免全表扫描全表扫描是指对整个表进行扫描,如果表中数据量较大,查询性能会受到较大影响。
复杂sql优化的方法及思路

复杂sql优化的方法及思路复杂SQL优化的方法及思路SQL是关系型数据库管理系统中最常用的语言,但是在处理复杂查询时,SQL语句往往会变得非常复杂和冗长,导致查询速度缓慢。
为了提高查询效率,我们需要进行SQL优化。
以下是一些复杂SQL优化的方法及思路。
1.索引优化索引是提高数据库查询效率的重要手段之一。
在设计表结构时,应该根据实际情况建立适当的索引。
在查询语句中使用索引可以大大减少数据扫描量,从而提高查询效率。
2.避免使用子查询子查询虽然方便了我们编写复杂的SQL语句,但是在执行过程中会增加额外的开销。
因此,在编写复杂SQL语句时应尽量避免使用子查询。
3.减少JOIN操作JOIN操作也是影响查询效率的一个重要因素。
在设计表结构时应尽量避免使用JOIN操作或者减少JOIN操作次数。
4.合理使用聚合函数聚合函数(如SUM、AVG等)可以对数据进行统计分析,在处理大量数据时非常有用。
但是,在使用聚合函数时要注意不要频繁调用,否则会降低查询效率。
5.使用EXPLAIN命令分析查询语句EXPLAIN命令可以分析查询语句的执行计划,从而找出影响查询效率的因素。
通过分析EXPLAIN结果,可以对SQL语句进行优化。
6.避免使用SELECT *SELECT *会查询所有列,包括不需要的列,增加了数据扫描量,降低了查询效率。
在编写SQL语句时应尽量避免使用SELECT *。
7.合理使用缓存缓存可以减少数据库访问次数,提高查询效率。
在设计系统架构时应考虑缓存的使用。
8.优化表结构表结构的设计也是影响SQL查询效率的一个重要因素。
在设计表结构时应尽量避免冗余数据和过多的列。
以上是一些复杂SQL优化的方法及思路。
通过合理运用这些方法和思路,可以大大提高SQL查询效率,为数据库管理系统提供更好的性能和稳定性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCL语句处理(commit、rollback)
Commit顺序: 服务器为每个COMMIT产生一个SCN。使改变永久化。 LGWR进程将日志缓冲区数据并带有SCN一起写到重做日志文件。 服务器释放表级和行级锁。 用户被提示COMMIT完成。 服务器使事务已完成。 Rollback顺序 服务器进程不做任何的改变。 服务器释放表级和行级锁。 服务器使事务已完成。
翻译SQL语句,验证它是合法的语句,即书写正确 实现数据字典的查找,以验证是否符合表和列的定义 在所要求的对象上获取语法分析锁,使得在语句的语法分析过 程?验证为存取所涉及的模式对象所需的权限是否满足 决定此语句最佳的执行计划 将它装入共享SQL区 对分布的语句来说,把语句的全部或部分路由到包含所涉及数 据
SQL语句的优化
SQL语句处理过程
查询语句处理:select DML语句处理:insert、update delete DDL语句处理:create、drop、 alter、truncate TCL语句处理:commit rollback DCL语句处理:grant、revoke
说明: 图中列出了处理一个SQL语句需要的各 个重要阶段,不同的语句,在不同情况 下可能顺序不同。
Oracle优化器(Optimizer)
基于规则的优化器--Rule Based (Heuristic) Optimization(简称RBO)
优化器在分析SQL语句时,所遵循的是Oracle内部预定的一些规则 (15条)。 常见规则有:有索引时使用索引而不考虑其它影响性能的因素。 某些情况下所选择的执行计划性能并不是最佳。
共享SQL语句
共享的语句必须满足三个条件:
① ② ③ 字符级的比较 要求:当前被执行的语句和共享池中的语句必须完全相同 两个语句所指的对象必须完全相同 名称相同并不代表所指的是同一个对象 两个SQL语句中必须使用相同的名字的绑定变量(bind variables)
在查询的定义阶段,你指定与查询出的列值对应的接收变量 的位置、大小和数据类型,这样我们通过接收变量就可以得 到查询结果。如果必要的话,Oracle会自动实现数据类型的 转换。这是将接收变量的类型与对应的列类型相比较决定的
5. 绑定变量(Bind Any Variables)
执行到此时,Oracle知道了SQL语句的意思,但仍没有足够 的信息用于执行该语句。Oracle 需要得到在语句中列出的所 有变量的值。通过某个变量对某列的值进行限定,这个过程 就称绑定变量。
SQL语句处理过程
DDL语句处理(create、drop、alter)
DDL语句的执行不同与DML语句和查询语句的执行,这是因为DDL语句执行成功 后需要对数据字典数据进行修改。对于DDL语句,语句的分析阶段实际上包括分 析、查找数据字典信息和执行。 事务管理语句、会话管理语句、系统管理语句只有分析与执行阶段,为了重新执行 该语句,会重新分析与执行该语句。
ORACLE内部操作
当执行查询时,采用了内部的操作. 下表显示了几种 重要的内部操作.
ORACLE 子句
ORDER BY UNION MINUS INTERSECT DISTINCT,MINUS,INTERSECT,UNION MIN,MAX,COUNT GROUP BY ROWNUM SORT ORDER BY UNION-ALL MINUS INTERSECT SORT UNIQUE SORT AGGREGATE SORT GROUP BY COUNT or COUNT STOPKEY SORT JOIN,MERGE JOIN,NESTED LOOPS CONNECT BY
SQL语句处理过程
6. 并行执行语句(Parallelize the Statement )
ORACLE 可以在SELECT,DML语引、用子查询创建表、在分区表上的操作,也可 以执行并行操作。 并行化可以导致多个服务器进程为同一个SQL语句工作,使该SQL语句可以快 速完成 但会耗费更多的资源,所以除非很有必要,否则不要使用并行查询。
查看执行计划
什么是执行计划:
Oracle 用来运行一个语句的步骤就叫做执行计划(execution plan),执行计划包含了语句所涉及的每个表的访问路径和 连接顺序。
查看执行计划
SQLPULS自动跟踪
1、conn /as sysdba; 2、@$ORACLE_HOME/sqlplus/admin/plustrce.sql 3、grant plustrace to user_name 4、@$ORACLE_HOME/rdbms/admin/utlxplan.sql 5、create public synonym plan_table for plan_table; 6、grant all on plan_table to user_name ; 注:以上步骤只需配置一次即可。 7、conn username/password; 8、set autotrace traceonly(如果想看到结果集:set autotrace on,关闭: set autotrace off) 注:set autotrace traceonly explain /statistics (计划/统计) 9、set timing on(如果想同时看到语句执行的时间) 10、运行你的SQL
基于代价的优化器 -- Cost Based Optimization(简称CBO)
Oracle把一个代价引擎(Cost Engine)集成到数据库内核中,用来估计 每个执行计划需要的代价,该代价将每个执行计划所耗费的资源进行 量化,从而CBO可以根据这个代价选择出最优的执行计划。 一个查询耗费的资源被分成3个基本组成部分:I/O代价、CPU代价、 network代价。
SQL语句处理过程
8. 取出查询的行(Fetch Rows of a Query)
在fetch阶段,行数据被取出来,每个后续的存取操作检索结果 集中的下一行数据,直到最后一行被取出来。上面提到过,批 量的fetch是优化的技巧之一
9. 关闭游标(Close the Cursor)
SQL语句处理的最后一个阶段就是关闭游标
SQL语句处理过程
1. 创建游标(Create a Cursor)
任何SQL语句都会创建它,特别在运行DML语句时,都是自 动创建游标的,不需要开发人员干预。
2. 分析语句(Parse the Statement)
在语法分析期间,SQL语句从用户进程传送到Oracle,SQL语句 经语法分析分别执行下列操作:
SQL语句处理过程
3. 描述查询结果(Describe Results of a Query)
描述阶段只有在查询结果的各个列是未知时才需要;例如, 当查询由用户交互地输入需要输出的列名。在这种情况要用 描述阶段来决定查询结果的特征(数据类型,长度和名字)
4. 定义查询的输出数据(Define Output of a Query)
优化器的使用
Instance级别 通过在init.ora文件中设定OPTIMIZER_MODE=RULE、 OPTIMIZER_MODE=CHOOSE、 OPTIMIZER_MODE=FIRST_ROWS、 OPTIMIZER_MODE=ALL_ROWS去来设定,默认用的是Choose这 种方式。 Sessions级别 通过SQL> ALTER SESSION SET OPTIMIZER_MODE=<Mode>;来 设定 。 语句级别 在语句中添加一些提示,即需要用到Hint 。 [ SELECT | DELETE|UPDATE ] /*+ [hint | text ] */ 数据分析语句 SQL> ANALYZE TABLE table_name COMPUTE STATISTICS; SQL> ANALYZE INDEX index_name ESTIMATE STATISTICS; SQL>analyze table table_name delete statistics;
内部操作
Queries involving Joins
CONNECT BY
Rowid扫描
Rowid扫描 Rowid就是一个记录在数据块中的位置,由于指定了记录在数据 库中的精确位置,因此rowid是检索单条记录的最快方式。如果 通过rowid 来访问表,Oracle 首先需要获得被检索记录的 rowid,Oracle 可以在WHERE 子句中得到rowid,但更多的是 通过索引扫描来获得,然后Oracle 基于rowid来定位被检索的每 条记录。 优化器何时使用Rowid 并不是每个索引扫描都伴随着rowid的访问,如果索引中包 含了被访问的所有字段,则不再需要通过rowid来访问表。 注意: Rowid 是Oracle 表示数据存储的内部方法,它可能会由于 版本的改变而改变。不推荐通过在WHERE 中指定rowid 来 访问数据,因为行迁移和行链接会导致rowid 变化, exp/imp 也会使rowid变化。
索引扫描
索引扫描类型:
索引唯一扫描(Index Unique Scans) 索引范围扫描(Index Range Scans) 索引降序范围扫描(Index Range Scans Descending) 索引跳跃扫描(Index Skip Scans) 全索引扫描(Full Scans) 快速全索引扫描(Fast Full Index Scans) 索引连接(Index Joins) 位图连接(Bitmap Joins)
优化器的模式
RULE 使用RBO优化器 CHOOSE 为缺省值,它是根据实际情况,如果数据字典中包含被引用的表的统 计数据,即引用的对象已经被分析,则就使用CBO优化器,否则为 RBO优化器 FIRST_ROWS 使用CBO优化器,是以数据的响应时间为主要目标,以便快速查询 出开始的几行数据。 FIRST_ROWS_[1 | 10 | 100 | 1000] 使用 CBO 优化器让优化器选择一个能够把响应时间减到最小的查询 执行计划,而迅速产生查询结果的前 n 行(9i中引入),常用于联机应 用处理。 ALL_ROWS 使用 CBO 优化器,是以数据的吞吐量为主要目标,以便可以使用最 少的资源完成语句,常用于DDS。