为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用SQL语句查找时为提高查找速度而创建的对象。但若创建太多索引,购买新书或废弃时,会产生额外的维护费用。这是由于添加或删除书籍时应更新现有的索引抽屉。......
2023-11-01
在前文中,已介绍了索引的种类和设计时的注意事项等与索引相关的许多内容。 目前为止主要介绍了索引的概念,现在开始介绍哪种情况要使用索引。为正确使用索引,应熟练掌握以下五个内容:
(1)理解索引和表的大小、访问范围对性能的影响,熟练掌握相关索引的正确使用方法。
(2)熟练掌握无法使用索引时判断不能使用索引的原因并解决问题的方法。
(3)了解组合索引的使用标准和使用方案。
(4)了解访问数据时决定数据范围的条件和过滤数据的条件分别用在哪个步骤。
(5)了解索引变化情况,并按数据类型了解避免该问题的方案。
由前文已知,使用索引有一定的标准。当然现场可能会出现不可预知的变数,但大部分情况下,使用索引时考虑该标准可确保良好的性能。(www.chuimin.cn)
索引对象列是指经常出现在条件语句的列。经常出现在多个条件语句的列可判断为使用较频繁,所以会成为生成索引的对象。即便实际只出现在一个条件语句中,如果频繁地使用该SQL语句,也会成为生成索引的对象。选择索引对象应注意以下问题:
(1)在索引扫描中最重要的是数据扫描范围。如果将选择度不良的列用做索引,要扫描的范围会变得非常大。因此要将扫描范围变窄,需要将选择度良好的列选为生成索引的对象。
(2)连接条件中没有索引时连接方法变更,可能会产生大量I/O。 JOIN技术中会学习到,若不使用索引进行连接,将进行SORT MERGE JOIN而造成性能不良。因此,应考虑对参与连接条件的大部分列使用索引。
使用索引造成损失时的情形有以下几种:
(1)对于数据较少的表(16 Block以内),数据少到能够一次性使用I/O扫描整个表的程度时,或者列中有较多相同值时,FULL-TABLE SCAN更为有效。但对于OLTP[2]系统,考虑DB BUFFER的hit ratio时最好引导为索引扫描。
(2)与查找相比DML的负担更大时,执行较多DML语句时若使用索引则会成为降低系统性能的原因。对查找时获得的性能提高和DML时性能下降的损益分歧点进行分析,考虑是否生成索引。
有关数据库性能管理与调优的文章
为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用SQL语句查找时为提高查找速度而创建的对象。但若创建太多索引,购买新书或废弃时,会产生额外的维护费用。这是由于添加或删除书籍时应更新现有的索引抽屉。......
2023-11-01
1)例子(一)正确使用SQL的例子(一)如图5-12所示。因此B.ORDD = : TrDay或B.ORDD = : WorkDay的扫描范围较窄,使用索引时响应速度非常快。在这种情况下,优化器使用OR从内部分为两个SQL语句并各自使用索引,再将执行结果合并为一个结果。图5-13正确使用SQL的例子(二)问题:连接的两个表的条件中决定扫描范围的条件是"AND SUBSTR LIKE : IN_org_cd AND SUBSTR < 600000"。因此可按以下方法变更条件公式并使用相应索引。......
2023-11-01
B*树状索引具有树形结构。图3-1B*树原理下面介绍如何使用B*树索引搜索数据。B*树的特征如下:最常用作 Oracle的默认索引。为更好地调优,应充分了解B*树索引的缺点。以下为B*树索引的缺点:在B*树索引中,实际列值也应保存在索引中,因此管理大容量数据时可能会成为负担。 B*树索引的列值选择度良好才能保证性能良好。在B*树Index中,访问相同的表时将并行使用两个以上的索引,因此有许多限制。......
2023-11-01
为解决此问题设计了IOT索引。IOT因为已在索引中添加了表结构,读取索引便能完成所有操作。IOT表面上来看是表,实际上是以主关键字为根据的索引,需要将主关键字作为前提条件使用。 IOT的索引行包含索引关键字值和non-key值。 IOT的索引中没有ROWID信息。普通表和IOT表的差别主要有以下几点:普通表以ROWID区分行,IOT以PK区分行。 IOT无法设置unique限制条件。 IOT比普通表节省存储空间。 IOT必须生成 primary key。......
2023-11-01
图5-14考虑索引生成标准从根本上来说创建索引是为了加快查找速度。但如果创建特定索引,反而会对整体执行性能造成不良影响。因此为确定特定表的索引构成,需要调查访问表的SQL的访问模式,并基于调查结果做出综合性的判断。此外,添加索引时最好计算查找负载量减少和DML负载量增加造成的大致损益。因此生成两个索引对整个系统较为有效。......
2023-11-01
图5—9“设计表”窗口④在“设计表”窗口中选择要创建索引的字段“成绩”,右键点击打开快捷菜单。图5—10“索引/键”对话框⑥在“索引/键”对话框中单击“添加”按钮,系统将自动创建索引。......
2023-11-24
图5-5部分范围处理使用例子(二)以下是从两个表中分别提取生日和工资的SQL语句。为删除重复数据使用了UNION,因此无法执行部分范围处理。图5-6部分范围处理使用例子(三)按特定表的列顺序排序并显示多个表的连接结果时,如果要使用部分范围处理,可从以下两个方法中选择一个使用:在In-line view中对要排序的表进行 ORDER BY并用作 driving table以执行NESTED LOOP JOIN。......
2023-11-01
扫描索引和访问表时DATA FILE和DB BUFFER之间的I/O单位为1 BLOCK。应先了解以下各种表和索引的概念,充分考虑后再进行管理。因此,索引的行数始终小于或等于表的行数。索引和表是独立的对象,事务影响不大时可根据需要随时删除、变更索引。3)表访问如果用于查找条件的列已生成为索引,并且判断应用该索引时更快,则会通过扫描索引访问表。......
2023-11-01
相关推荐