预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

关于数据库索引的探讨【摘要】现在企业之间数据交流的各种数据量的急剧增长且要求数据处理及时这对数据库的处理能力方面提出了更高的要求。数据库索引可以有效地提高数据的查询处理效率如何合理地设置索引并优化索引则要考虑到方方面面的要求本文通过对数据库的索引技术进行了研究论述如何合理设置索引以期给数据库设计者和系统开发者提供参考。【关键词】数据库索引;聚集索引;非聚集索引;查询优化由于计算机网络技术的迅猛发展企业间数据交流的各种数据量的急剧增长不但要求处理的结果要准确而且也要求处理速度及时这对数据库的处理能力能力方面提出了更高的要求如何设置有效的数据库索引达到数据库优化是本文要讨论的重点。应用索引的过程其实类似于查新华字典比照数据库的概念新华字典里的拼音检字法和部首检字法就是新华字典的两种不同的索引而新华字典的正文则相当于表同时创建索引并不会改变表中的数据的物理位置它只是创建了一个新的数据结构指向数据表。比起逐一查阅字典正文查找某一个具体的汉字显然不管使用哪种检字法都可以很快地在字典正文中找到这个汉字这就是使用索引的给我们带来的好处。如何准确高效地从海量的信息中查询到想要的数据已成为数据库设计人员的首要任务。所以我们可以从逻辑上简单地认为索引是一个单独的、物理的数据结构它主要包含两列内容第一列是从表或视图中的列或列的组合所生成的键值的集合且根据键值以升序或降序排列。这一列类似于新华字典的音序它以字母升序排列即A在最前而Z在最后。索引的另外一列则是指向表中这些值的数据页的逻辑指针的集合。这一列则类似于对应音序的页码。索引依赖于表作为表的组成部分由数据库系统自动维护是对数据库表中一个或多个列的值进行排序的数据结构不同的索引对应不同的排序方法。一个表的存储是由两部分组成的一部分是用来存放数据的数据页面另一部分是用来存放索引的索引索引页面通常索引页面比数据页面小得多。假设表中的数据在磁盘上存储是有序的那么当在数据库在进行插入数据、删除数据和更新数据时则一定会导致数据的顺序会发生变化为了保证数据的连续性和有序性就需要重新移动数据改变它们的物理位置而种移动将会导致增大磁盘的I/O操作使得整个数据库运行非常缓慢;使用索引的主要目的是使数据逻辑有序。为了实现数据逻辑有序实际上索引的物理结构是一个双向链表使用双向链表来保证数据的逻辑顺序如果要对表中的一个已有结点进行更新则仅需修改该节点的前驱和后继而且无需修改该节点的物理位置;如果要在两个节点中插入一个新的节点只需修改节点的前驱和后继而且无需修改新节点的物理位置;如果要删除一个已有结点则仅需修改其前驱结点的后继为该被删除结点的后继。总的来说索引保存着具体数据的物理地址值。索引从大的方面分为聚集索引和非聚集索引。所谓聚集索引是指表中数据的物理顺序是和索引的顺序是一至的数据页是聚集索引的叶节点数据页之间通过双向链表的形式连接起来而且实际的数据都存储在数据页中。查询时数据库首先根据索引查找找到索引值后接着查找该索引的数据页(叶节点)获取具体数据。如果没有索引则查询时会进行全表的遍历。第二类索引则称为非聚集索引非聚集索引是物理存储不按照索引排序非聚集索引的叶节点(IndexLeafPages)包含着指向具体数据行的指针或聚集索引数据页之间没有连接是相对独立的页。具体地来说非聚集索引又分为:①堆表非聚集索引在没有聚集索引的情况下表中的数据页是通过堆(Heap)形式进行存储堆是不含聚集索引的表;SQLServer中的堆存储是把新的数据行存储到最后一个页中。非聚集索引通过双向链表连接而叶节点包含指具体数据行的指针。堆表中查询信息时首先遍历索引获取到指针信息再根据指针信息获取相应数据页中的数据。②聚集表非聚集索引当表上存在聚集索引时任何非聚集索引的叶节点就不是指针值而是包含聚集索引的索引值。非聚集索引依然通过双向链表连接但叶节点包含的是索引表的索引值。在聚集表中查询信息时首先遍历索引获取索引值然后根据索引值获取相应数据页中的数据。数据库查询表主要通过以下五种方式:①TableScan:扫描整个表这个操作将会逐行检查整个表直到找到所匹配的记录行或者扫描完整个表。可以看出这种查找记录的方式效率是最差的。②IndexScan:根据索引按照一定的算法从表中过滤出来一部分记录在过滤出来的这一部分记录中进行查找所匹配的记录行显然这种方式比第一种方式的查找范围要小因此比TableScan的查找效率高。③IndexSeek:根据索引直接定位(获取)记录的存放位置然后根据获取的记录的存放位置直接取得记录因此比TableScan、IndexScan快。④ClusteredIndexScan:与TableS