Oracle 11gR2 概念 第3章 索引和索引组织表

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

@hotmail.comPreviousNextViewPDF3IndexesandIndex-OrganizedTablesPreviousNextViewPDF第3章索引和索引组织表Thischapterdiscussesindexes,whichareschemaobjectsthatcanspeedaccesstotablerows,andindex-organizedtables,whicharetablesstoredinanindexstructure.本章讨论索引,这种模式对象可以加快对常规表、及以索引结构存储的索引组织表的访问。Thischaptercontainsthefollowingsections:OverviewofIndexesoIndexCharacteristicsoB-TreeIndexesoBitmapIndexesoFunction-BasedIndexesoApplicationDomainIndexesoIndexStorageOverviewofIndex-OrganizedTablesoIndex-OrganizedTableCharacteristicsoIndex-OrganizedTableswithRowOverflowAreaoSecondaryIndexesonIndex-OrganizedTables本章包含以下各节:索引概述o索引特征oB-树索引o位图索引o基于函数的索引o应用程序域索引o索引存储索引组织表概述o索引组织表特征o索引组织表的行溢出区o索引组织表的辅助索引OverviewofIndexes索引概述Anindexisanoptionalstructure,associatedwithatableortablecluster,thatcansometimesspeeddataaccess.Bycreatinganindexononeormorecolumnsofatable,yougaintheabilityinsomecasestoretrieveasmallsetofrandomlydistributedrowsfromthetable.IndexesareoneofmanymeansofreducingdiskI/O.索引是一种与表或表簇相关联的可选结构,有时可以提高数据访问速度。通过在表中的一个或多个列上创建索引,在某些情况下使您能够(快速地)从随机分布的表行中检索一小部分行。索引是减少磁盘I/O的许多手段之一。Ifaheap-organizedtablehasnoindexes,thenthedatabasemustperformafulltablescantofindavalue.Forexample,withoutanindex,aqueryoflocation2700inthehr.departmentstablerequiresthedatabasetosearcheveryrowineverytableblockforthisvalue.Thisapproachdoes如果一个堆组织表没有索引,数据库必须执行全表扫描来查找值。例如,如果没有索引,为查询hr.departments表中的位置2700,数据库需要搜索每个表块中的每一行,以找到该值。当数据量增加时,这种方法不具备良好的可扩展性。@hotmail.comnotscalewellasdatavolumesincrease.Forananalogy,supposeanHRmanagerhasashelfofcardboardboxes.Folderscontainingemployeeinformationareinsertedrandomlyintheboxes.ThefolderforemployeeWhalen(ID200)is10foldersupfromthebottomofbox1,whereasthefolderforKing(ID100)isatthebottomofbox3.Tolocateafolder,themanagerlooksateveryfolderinbox1frombottomtotop,andthenmovesfromboxtoboxuntilthefolderisfound.Tospeedaccess,themanagercouldcreateanindexthatsequentiallylistseveryemployeeIDwithitsfolderlocation:打个比方,假设一个人力资源经理有一个搁放纸盒的架子。在框中包含雇员信息的文件夹随机放置在纸盒中。员工Whalen(ID200)的文件夹是从10盒从底往上的盒子中的第1盒,而King是(ID100)的文件夹是从底往上的第3盒。要查找某个文件夹,经理从底往上查看这些盒子中的每个文件夹,看完一盒又看下一盒,直到找到该文件夹。为加快查找速度,经理可创建一个索引,按顺序列出每个雇员ID和它的文件夹位置:ID100:Box3,position1(bottom)ID100:Box3,position1(bottom)ID101:Box7,position8ID101:Box7,position8ID200:Box1,position10ID200:Box1,position10......Similarly,themanagercouldcreateseparateindexesforemployeelastnames,departmentIDs,andsoon.同样,经理可以为雇员姓氏,部门id等创建单独的索引。Ingeneral,considercreatinganindexonacolumninanyofthefollowingsituations:通常,在下列情况下可以考虑在某列上创建索引:Theindexedcolumnsarequeriedfrequentlyandreturnasmallpercentageofthetotalnumberofrowsinthetable.要索引的列经常被查询,并只返回表中的行的总数的一小部分。Areferentialintegrityconstraintexistsontheindexedcolumnorcolumns.Theindexisameanstoavoidafulltablelockthatwouldotherwiseberequiredifyouupdatetheparenttableprimarykey,mergeintotheparenttable,ordeletefromtheparenttable.在索引的列或列集上存在引用完整性约束。索引可以避免当你更新父表主键、合并父表、从父表删除行时可能引起的全表锁定。Auniquekeyconstraintwillbeplacedonthetableandyouwanttomanuallyspecifytheindexandallindexoptions.要在表上设置唯一键约束,并且您想手动指定索引和所有索引选项。SeeAlso:另见:Chapter5,DataIntegrity第5章,数据完整性IndexCharacteristics索引特征Indexesareschemaobjectsthatarelogicallyandphysicallyindependentofthedataintheobjectswithwhichtheyareassociated.Thus,anindex索引是一种模式对象,它在逻辑上和物理上都与其相关联的对象中的数据保持独立。因此,可以删除或创建索引而不会实际影响相关的表。@hotmail.comcanbedroppedorcreatedwithoutphysicallyaffectingthetablefortheindex.Note:注意:Ifyoudropanindex,thenapplicationsstillwork.However,accessofpreviouslyindexeddatacanbeslower.如果您删除一个索引,应用程序将仍然可以工作。不过,访问之前索引过数据可能变慢。TheabsenceorpresenceofanindexdoesnotrequireachangeinthewordingofanySQLstatement.Anindexisafastaccesspathtoasinglerowofdata.Itaffectsonlythespeedofexecution.Givenadatavaluethathasbeenindexed,theindexpointsdirectlytothelocationoftherowscontainingthatvalue.索引的存在与否,不需要改变任何SQL语句的写法。索引是到单一行数据的快速访问路径。它只影响执行的速度。对于一个已被索引的给定的数据值,索引直接指向包含该值的行的位置。Thedatabaseautomaticallymaintainsandusesindexesaftertheyarecreated.Thedatabasealsoautomaticallyreflectschangestodata,suchasadding,updating,anddeletingrows,inallrelevantindexeswithnoadditionalactionsrequiredbyusers.Retrievalperformanceofindexeddataremainsalmostconstant,evenasrowsareinserted.However,thepresenceofmanyindexesonatabledegradesDMLperformancebecausethedatabasemustalsoupdatetheindexes.在创建索引后,数据库会自动维护并使用它们。数据库还会自动反映对相关表数据的更改,如添加、更新、和删除行等,用户不需要对所有相关索引做任何操作。即使在插入行时,被索引数据的检索性能仍然几乎不变。但是,在表上存在过多的索引,会降低DML性能,因为数据库还必须更新索引。Indexeshavethefollowingproperties:索引具有以下属性:Usability可用性Indexesareusable(default)orunusable.AnunusableindexisnotmaintainedbyDMLoperationsandisignoredbytheoptimizer.Anunusableindexcanimprovetheperformanceofbulkloads.Insteadofdroppinganindexandlaterre-creatingit,youcanmaketheindexunusableandthenrebuildit.Unusableindexesandindexpartitionsdonotconsumespace.Whenyoumakeausableindexunusable,thedatabasedropsitsindexsegment.索引可能是可用的

1 / 44
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功