- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈数据库索引使用
浅谈数据库索引使用
[摘要]索引是影响关系数据库(RDBMS)性能的重要因素之一。当今常用的关系数据库,如SQL Server、Sybase、Oracle、DB2、informix等,为了提高性能,都提供相应的索引机制。本文介绍了索引的概念、使用方法以及日常维护。??
[关键词]数据库 索引 检索
一、索引的概念??
1.索引基本概念??
索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。表的存储由两部分组成,一部分用来存放数据页面,另一部分存放索引页面。通常,索引页面相对于数据页面来说小得多。数据检索花费的大部分开销是磁盘读写,没有索引就需要从磁盘上读表的每一个数据页,如果有索引,则只需查找索引页面就可以了。所以建立合理的索引,就能加速数据的检索过程。??
2.索引分类??
根据索引的顺序与数据表的物理顺序是否相同可以分为:聚簇索引(clustered index)和非聚簇索引(nonclustered index)。??
(1)聚簇索引重新组织表中的数据以按指定的一个或多个列的值排序。聚簇索引的叶节点包含实际的数据,因此用它查找数据很快,但每个表只能建一个聚簇索引。??
(2)非聚簇索引不重新组织表中的数据,它的叶节点中存储了组成非聚簇索引的列的值和行定位指针。??
下面,我们举例来说明一下聚集索引和非聚集索引的区别:??
汉语字典的正文本身就是一个聚簇索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;也就是说,字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。??
我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚簇索引”。??
如果您认识某个字,您可以快速地从自动中查到这个字。但您也可能会遇到您不认识的字,不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法。??
我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚簇索引”。通过以上例子,我们可以理解到什么是“聚簇索引”和“非聚簇索引”。??
二、索引的使用??
1.聚簇索引的使用??
在聚簇索引下,数据在物理上按顺序排在数据页上,重复值也排在一起,因而在那些包含范围检查(between、、=)或使用group by、order by的查询时,一旦找到具有范围中第一个键值的行,具有后续索引值的行必然连在一起,不必进一步搜索,避免了大范围扫描,可以大大提高查询速度。??
2.非聚簇索引的使用??
非聚簇索引的叶节点不包含实际的数据,因此它检索效率较低,一个表只能建一个聚簇索引,当用户需要建立多个索引时就需要使用非聚簇索引了。在建立非聚簇索引时,要权衡索引对查询速度的加快与降低修改速度之间的利弊。??
3.索引使用的误区??
(1)主键就是聚簇索引??
一些数据库系统(比如SQL server)会把主键默认为聚簇索引,这种做法常常造成聚簇索引的浪费。通常,我们会为每个表建立一个ID列,以区分每条数据,并且该列是自动增大的,步长一般为1。如果我们把这个列设为聚簇索引。这样做可以使数据在数据库中按ID进行物理排序,但这种做法在实际应用中意义并不大。??
举例如下:以电信级数据库中存储话单的表为例,我们查询某个用户的通话记录时经常需要返回某个时间特定范围内的数据。下面我们分几种情况观察在不同索引条件下查询相同内容所用的时间。??
假设话单表名为“rec”,其中主叫号码字段名为“callingnumber”,日期字段名为“date”,要求是从表rec中检索callingnumber为“037112345678”的主叫号码2007年3月1日到20日的通话记录,对应的SQL语句如下:??
Select * from rec where dateand datend callingnumber=037112345678;??
第一种情况,用ID列建立聚簇索引,不为date和callingnumber建立索引,查询时间为287秒。(相当于整表扫描,此种情况下
您可能关注的文档
最近下载
- 2023年税务师继续教育题库(含答案)word版.docx
- 2023微高压氧舱标准.docx
- 安全生产帮扶服务合同8篇.docx VIP
- 学法律之民法典内容框架.docx VIP
- 中 山 大 学 软 件 学 院 软 件 工 程 专 业 2 0 0 8 级 (2010 秋季学期)《 S E - 3 0 4 数据库系统原理》 期 末 试 题 .docx VIP
- 2025年碳汇林项目可行性报告(精选10).docx
- 2022年《大学英语B》统考题库 网络教育《大学英语B》统考真题.pdf VIP
- 民事诉讼淮证明责任分配规则.docx VIP
- 教师评优述职报告范文6篇.docx VIP
- 压力管道检测保温拆除及恢复工程施工方案.pdf VIP
原创力文档


文档评论(0)