1. 当需要查询数据库时,我们不但要关注哪些数据被读取,同样要关注搜索数据时的范围.
search range : 为了满足SQL语句需要检查哪些记录. 影响它的有访问策略, 使用的索引, where 子句.
Access strategy: index access, full table scan. 访问策略基于以下条件由Cost based optimizer
- Conditions in the WHERE clause of the SQL statement
- Database indexes of the table(s) affected
- Selectivity of the table fields contained in the database indexes
- Size of the table(s) affected
优化计算 是 需要读取的数据块的数量.
2. Architeture of indexes
1> Primary indexes: consists of primary key fields ,unique
Secondary indexes: unique or non-unique.
table
,index 数据是以data block 形式存于硬盘上的. Index blocks 是以多级的B tree形式来组织的. Root -
branch - Leaf .叶一级含有ROWID指向实际的table block 中的记录.注意的是index
record是排序的,而table record不是. 一个索引不能含有过多字段,过多会影响处理选择路径. ]
2>
Access Strategies for Tables
Index Unique Scan
Unique index is fully specified using AND after the 'equals' sign 对index中的字段用 = 全部设定.
Index Range Scan
Index is not fully specified or not unique 在选择条件中使用索引中的部分字段,或索引不是惟一的.
Full table scan
No index isused
All table blocks are read 整个表被顺序读取 ,在条件中没有使用INDEX字段
Concatenation
Indexes are used more than once 索引被多次使用 , 像使用IN 语句时
Used with OR or IN operation
3> Indexs administration
4> Using indexes.
qualifing index fields form left to right benfits the use of
indexes. 在WHERE 子句中指定索引字段的值,最好从左到右依次指定索引字段, 指定的字段组成index search
string, index search string是最好不要出现空当, 并且第一个字段尤其重要,不要给它留空.
可以通过SE11查看index中字段的顺序.
3. 精炼访问DB语句以使用索引:
注:根本在于防止Full table scan, 尽可能采用INDEX来访问,而且在有INDEX访问数据库的时候,避免对INDEX顺序查找,而是促使数据库采用BINARY SEARCH.
1> 如果Primary index字段能满足的话,尽量写全,不要漏掉.
2> 使用CLIENT SPECIFIED 时,一定要指定相应的MANDT字段的值,否则会从全部CLIENT数据中搜索.
3> 对于使用NOT,<>的语句,如果可能的话,尽量使用IN来改写.因为使用NOT,<> 系统不会采用binary search 来查找索引.
4> 对于间隔区间较小的BETWEEN 条件用IN来代替.
对于LIKE, >,< 来讲,如果可能的话尽量采用 = 来代替. 对于LIKE来说,尽量值的第一个字符不要是通配符.
在ABAP语句中,通配符(widlcard) , + 代表任意单个字符, * 代表任意个字符.但对于数据库访问, _ % 被用来作为通配符.
4. Rules for index designing
如果指定的一条索引可以确定搜索范围在表的5%之内.它是合适的
表内的索引总量不要太多,一般在5个左右,并且索引之间不要有重复的结构和字段.
索引内的字段不要超过4个,太多会占用内存空间,使数据库有不必要的操作.
The selective fields in an index should be as near to the
beginning of the index as possible (see index range scan access
strategy). Selective fields are, for example, document number, material
number, and customer number. Unselective fields are, for example,
client, company code, header account, and plant. 作为选取字段在索引中的位置要尽量靠前.
Index range scan.
什么样的字段可以成为selective field, 通过这个字段作为条件可以将搜索缩小到一定范围P113.(BC490_COL62)
Tools:
Tcode: DB02. Database Performance: Tables and Indexes.
DB02----> Tables and Indexes ----> Detail Analysis -----> Table Columns
显示出的列表中有一列Disctinct values,这个值越大说明其selectivity 越大,即可以作为selective field.
selectivity analysis (DB05) is a tool for constructing indexes.
分享到:
相关推荐
"BC490 ABAP Performance Tuning"是专门针对这一主题的深入学习材料,旨在帮助开发人员理解和掌握如何提升ABAP代码的执行速度。在这个主题中,我们将探讨多个关键知识点,包括代码分析、数据库优化、内存管理以及...
### Oracle 11G Performance Tuning - sg3 #### 标题解读: “Oracle 11G Performance Tuning - sg3” 这个标题指出了文档的主要内容:针对Oracle Database 11g版本的数据库性能优化。其中,“sg3”表示这是性能...
### Oracle 11G Performance Tuning - sg2 #### 标题解读: “Oracle 11G Performance Tuning - sg2” 这个标题明确指出了文档的主要内容是关于 Oracle Database 11g 的性能调优。其中,“sg2”可能是指该文档属于...
Linux Debugging and Performance Tuning (Prentice, 2005)
这涉及识别和重写低效的SQL语句,利用执行计划(EXPLAIN PLAN)进行分析,并使用SQL Tuning Advisor等工具来优化查询。 4. 索引优化:索引是提高数据库查询性能的关键因素。要对索引进行维护,包括创建和删除索引,...
本卷《Oracle Database 12c: Performance Management and Tuning Student Guide - Volume II》主要围绕性能管理和调优展开,旨在帮助读者深入理解如何有效地管理和优化 Oracle 12c 数据库的性能。 #### 二、性能...
在《Oracle Database 12c: Performance Management and Tuning》这本学生指南中,作者Donna Keesling和James Spillery系统地介绍了Oracle Database 12c版本中的性能管理和调优方法。本书不仅涵盖了基本的性能监控...
在Oracle 9i数据库管理系统中,性能调优是一项关键任务,它涉及到多个层面,如数据缓冲区、共享池、日志缓冲区和排序区的调整。以下是对这些关键组件的详细解释和优化策略。 1. 数据缓冲区调整(Buffer Cache) ...
### Java性能调优入门 #### 引言 本文档旨在为读者提供一系列有用的起步方法,以解决与Java相关的性能问题,并帮助用户针对HP-UX环境下的Java应用进行性能调优。文档并不涵盖所有细节,而是作为该领域的入门指南。...
这些知识点将围绕Oracle数据库性能调优,并尽可能地反映在该2-day-performance-tuning-guide.pdf文件中可能包含的内容。以下内容将尽可能细致地阐述相关的知识点: ### 知识点一:性能调优基础概念 - **性能调优的...
其中,“tuning-primer.sh”就是一个广为使用的MySQL性能调优脚本。这个脚本能够帮助我们分析数据库的配置参数,提供优化建议,从而提升数据库的运行效率。 “tuning-primer.sh”是一款基于Shell的开源工具,由...
《Mellanox网络适配器性能调优指南》(Performance Tuning Guide for Mellanox Network Adapters) 是一份由Mellanox Technologies发布的技术文档,旨在为用户提供关于如何优化Mellanox网络适配器性能的详细指导。...
《MTK音频调试工具——Audio-Tuning-Tool-exe-v2.2052详解》 MTK(MediaTek)音频调试工具是一款专为MediaTek芯片平台设计的专业软件,用于帮助开发者、工程师以及爱好者对手机或其他设备的音频系统进行调试和优化...
AIX系统性能调优是IT领域中一项关键技术,它涉及到一系列方法和最佳实践,用于优化和改善AIX(Advanced Interactive eXecutive)操作系统的性能。AIX是IBM公司开发的一种UNIX操作系统,广泛应用于其Power Systems...
**BC490_ABAP Performance Tuning** 这份文档主要聚焦于SAP系统中的ABAP(Advanced Business Application Programming)语言的性能优化技巧和技术。文档强调了在R/3 Release 4.6C版本中对ABAP程序进行性能调优的方法...
《PyPI官网下载:探索chess-tuning-tools-0.7.0b2.tar.gz的分布式优化实践》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了丰富的Python软件包,使得开发工作更加便捷高效。在PyPI官网中,...
《Oracle® Database 2 Day + Performance Tuning Guide》是一本专为Oracle数据库性能优化设计的指南,由Oracle公司及其关联公司在2019年发布。该指南由Rajesh Bhatiya为主要作者,并由众多Oracle专家共同贡献。本书...
iOS and Macos Performance Tuning: Cocoa, Cocoa Touch, Objective-C, and Swift (Developer's Library) by Marcel Weiher English | 3 Mar. 2017 | ISBN: 0321842847 | 400 Pages | EPUB/PDF (conv) | 42.64 MB ...
"Oracle SQL Performance Tuning 39Tips" 提供了由Oracle专家Tom Kyte精心总结的30个SQL优化技巧,这些技巧旨在帮助用户提升数据库查询速度,减少资源消耗,提高系统整体性能。 1. **索引优化**:Tom Kyte强调了...
SAP Portal 7.3 性能优化 Performance Tuning