表示索引为唯一性索引。指索引的长度,必须是字符串类型才可以使用。如果在创建索引时没写索引名称,MySQL会自动用字段名作为索引名称。其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。......
2023-10-29
设计索引时应注意以下事项:
1)对大容量表应用索引
根据 DB_ BLOCK_SIZE参数值确定大容量表的标准(参数值在 init.ora中定义)。“表的大小超过 6块时请使用索引。”这种说法较为常见。这句话表示 DB_BLOCK_SIZE参数值为 8 K(8192 byte)时,大小超过 49,152 byte(=48 K=8 K * 6块)的表称为大容量表,此处建议应用索引。那为何对容量小的表不适合设置索引?那是由于对较小的表使用索引时,性能可能比全表扫描方式差。全表扫描时,根据DB_ FILE_ MULTIBLOCK_ READ_COUNT参数中定义的值决定可读表块。因此扫描容量小的表时,与逐个值比较的索引相比,一次读取多个块的全表扫描能实现更好的性能。在Orange中,不进行特定查询查找就能在[Database Information]—[System Parameter]中查找并修改参数值。图3-4所示为在 Database Information中查找 db_file_multiblock_read_count。
图3-4 在Database Information中查找db_file_multiblock_read_count
2)满足条件值的选择度在10%~15%以下时生成索引可以保证最佳性能
在学习这部分内容之前,有必要对选择度进行更为深刻的了解。相信大家一定都有这样的体验:我们在学习数据库时,常常因为“选择度”这个概念造成诸多混淆。我们自以为对选择度的概念非常了解,但通过广泛阅读数据库相关书籍,我们发现选择度的好坏不仅可以用好、坏来描述,还可以用宽、窄来描述。并通过该表达方式从索引选择中排除选择度不良的列。这是因为存在多种情况。下面介绍通过多种方式使用的选择度:
(1)选择度不良=值较大=范围广。这三种方法所表达的意思相同。可将性别作为选择度不良时的典型例子,因为性别非男即女,至少有50%以上的高选择度值,因此选择度不良。
(2)选择度良好=值较小=范围窄;这三种方法所表达的意思相同。选择度良好的典型例子为人名最前面的姓氏中福的姓,其选择度非常好。前100个姓氏总人口占全国人口的84.77%,但福姓却不到1■。每个人学习数据库的方法各不相同,但笔者认为最好的方法就是在脑海中或在草稿纸上画出表格,一步一步按数据处理过程执行,这是最容易理解的方法之一。无法理解书中的字面意思时该方法非常有效。
3)最新的DBMS提供多种索引类型,要在适时适宜的地方使用最适合的索引
最新的DBMS提供多种类型的索引。默认情况下提供B*树索引、倒序索引、降序、基于函数、IOT、BITMAP、组合索引等不同性质的索引,用户应学习多种索引类型,在适时适宜的地方有效使用索引。本文后续将详细介绍各种索引种类。
4)即便选择度不良,要进行部分范围处理时也可使用索引(www.chuimin.cn)
表的数据分布非常多样化,包括列值的选择度非常好的表、列中某些值的选择度良好的表、某些值的选择度太差的表等。要使用索引的列值选择度良好时并不受影响,但选择度良好条件和不良条件同时存在的情况时,为性能考虑最好使用索引。在这种情况下,对选择度良好的列使用索引,对选择度不良的列使用全表扫描,从而确定执行计划。因此,用户直接确定执行计划时可使用HINT子句。
5)生成索引时应充分考虑物理存储空间
生成表空间时要考虑物理大小。其原因多种多样,但其中一个原因是生成索引时会重新生成索引表,因而需要不少存储空间。使用索引的确会使性能良好,但随意使用太多索引则会浪费存储空间,可能出现要重新设计表空间的情况。因此,使用索引时应始终充分全面地考虑后慎重进行。例如:
Plan Tool:将通过 SQL Monitor或 Session Monitor、Lock Monitor提取的SQL传输到Plan Tool进行调优操作。Plan Tool具有查看执行计划、查看模式信息、执行跟踪(Trace )、执行SQL等功能。Plan Tool为视觉效果提供对输入的SQL执行FORMATTING的功能,同样以树形显示执行计划,对于复杂的执行计划,可对树Expand/Collapse并进行调整,或使用竖向显示方式以方便了解整个步骤。此外,仅通过双击执行计划的各个步骤,便可在弹出窗口中立即查看与该步骤相关的对象信息和统计信息,而且能在独立选项卡上一次查找与整个SQL语句相关的所有对象信息。(笔者认为每次调优SQL时要一一使用脚本确认相关索引和数据数、列分布等信息非常麻烦,但在Orange中仅通过双击就能查看这些信息,可以方便快速地进行操作。) Plan Tool如图3-5、图3-6所示。
Plan Tool最大的优点是可以实时执行跟踪和格式化,仅通过单击操作便能对相应会话设置跟踪操作,然后执行SQL,再从服务器提取跟踪文件并格式化为TKPROF等格式后显示。此外,可以从1、4、8、12中选择跟踪级别并执行。最后,Plan Tool的重要功能之一是能以独立的选项卡区分原始SQL和调优SQL,操作时可以比较各个执行计划、模式信息、跟踪结果等,再将所有调优操作结果进行保存,日后进行提取便可查找开始操作时的执行计划、统计信息和对象的现状等全部信息,对实际操作非常有效。以下是查看Plan Tool的跟踪和脚本信息的画面。
图 3-5 Plan Tool(一 )
图 3-6 Plan Tool(二 )
有关数据库性能管理与调优的文章
表示索引为唯一性索引。指索引的长度,必须是字符串类型才可以使用。如果在创建索引时没写索引名称,MySQL会自动用字段名作为索引名称。其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。......
2023-10-29
图5—9“设计表”窗口④在“设计表”窗口中选择要创建索引的字段“成绩”,右键点击打开快捷菜单。图5—10“索引/键”对话框⑥在“索引/键”对话框中单击“添加”按钮,系统将自动创建索引。......
2023-11-24
扫描索引和访问表时DATA FILE和DB BUFFER之间的I/O单位为1 BLOCK。应先了解以下各种表和索引的概念,充分考虑后再进行管理。因此,索引的行数始终小于或等于表的行数。索引和表是独立的对象,事务影响不大时可根据需要随时删除、变更索引。3)表访问如果用于查找条件的列已生成为索引,并且判断应用该索引时更快,则会通过扫描索引访问表。......
2023-11-01
目前为止主要介绍了索引的概念,现在开始介绍哪种情况要使用索引。为正确使用索引,应熟练掌握以下五个内容:理解索引和表的大小、访问范围对性能的影响,熟练掌握相关索引的正确使用方法。了解组合索引的使用标准和使用方案。与查找相比DML的负担更大时,执行较多DML语句时若使用索引则会成为降低系统性能的原因。......
2023-11-01
B*树状索引具有树形结构。图3-1B*树原理下面介绍如何使用B*树索引搜索数据。B*树的特征如下:最常用作 Oracle的默认索引。为更好地调优,应充分了解B*树索引的缺点。以下为B*树索引的缺点:在B*树索引中,实际列值也应保存在索引中,因此管理大容量数据时可能会成为负担。 B*树索引的列值选择度良好才能保证性能良好。在B*树Index中,访问相同的表时将并行使用两个以上的索引,因此有许多限制。......
2023-11-01
为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用SQL语句查找时为提高查找速度而创建的对象。但若创建太多索引,购买新书或废弃时,会产生额外的维护费用。这是由于添加或删除书籍时应更新现有的索引抽屉。......
2023-11-01
参考文献[4]中详细讨论了并行数据库系统中的索引问题。讨论并行数据库系统数据的安置问题,下面几个方面是不可忽视的。并行数据库系统有物理资源级和操作级两个负载均衡问题。图14.25倒排文件的结构在并行系统里,分割一个倒排文件可以提高负载均衡和检索效率。......
2023-10-28
为解决此问题设计了IOT索引。IOT因为已在索引中添加了表结构,读取索引便能完成所有操作。IOT表面上来看是表,实际上是以主关键字为根据的索引,需要将主关键字作为前提条件使用。 IOT的索引行包含索引关键字值和non-key值。 IOT的索引中没有ROWID信息。普通表和IOT表的差别主要有以下几点:普通表以ROWID区分行,IOT以PK区分行。 IOT无法设置unique限制条件。 IOT比普通表节省存储空间。 IOT必须生成 primary key。......
2023-11-01
相关推荐