问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于SQL的索引

发布网友 发布时间:2022-05-01 22:52

我来回答

2个回答

懂视网 时间:2022-05-02 03:13

 建立索引是加快查询速度的有效手段,用户能够依据应用环境的须要。在基本表上建立一个或者多个索引,以提供多种存取路径,加快查找速度。

一般来说,建立与删除索引由数据库管理员DBA或者表的属主(owner),即建立表的人负责完毕,系统在存取数据时会自己主动选择合适的索引作为存取路径,用户不必也不能显示地选择索引。


2、索引长处和缺点

首先明确为什么创建索引,由于创建索引能够大大提高系统的性能。

  • 通过创建唯一性索引,能够保证数据库表中每一行数据的唯一性。
  • 能够大大加快数据的检索速度,这也是创建索引的最基本的原因。

  • 能够加速表和表之间的连接,特别是在实现数据的參考完整性方面特别有意义。
  • 在使用分组和排序子句进行数据检索时,相同能够显著降低查询中分组和排序的时间。
  • 通过使用索引。能够在查询的过程中。使用优化隐藏器,提高系统的性能。

  • 添加索引有如此多的长处,为什么不正确表中的每个列创建一个索引呢?这样的想法固然有其合理性,然而也有其片面性,尽管索引有很多的长处,可是。为表中的每个列都添加索引,是很不明智的,这是由于,添加索引也有很多不利的一个方面。
  • 创建索引和维护索引要耗费时间。这样的时间随着数据量的添加而添加。
  • 索引须要占物理空间,除了数据表占数据空间之外。每个索引还要占一定的物理空间。假设要建立举聚簇索引,那么须要的空间就会更大。

  • 当对表中的数据进行添加、删除和改动的时候。索引也要动态的维护,这样就减少了数据的维护速度。

  • 索引是建立在数据库表中的某些列上。因此在创建索引的时候,应该细致考虑在哪些列上能够创建索引,在哪些列上不能创建索引,一般来说,应该在这些列上创建索引:
  • 1、在常常须要搜索的列上,能够加快搜索速度 2、在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。 3、在经经常使用在连接的列上。这些列主要是一些外键,能够加快连接的速度。 4、在常常须要依据范围进行搜索的列上创建索引,由于索引已经排序,其指定的范围是连续的。

    5、在常常须要排序的列上创建索引,由于索引已经排序。这样查询能够利用索引的排序,加快排序查询时间。

    6、在常常使用where子句中的列上面创建索引,加快条件的推断速度。 相同对于有些列是不应该创建索引的。一般来说。不应该创建索引的这些列具有下列特点: 1、对于那些在查询中非常少使用或者參考的列不应该创建索引,这是由于。既然这些列非常少使用到,因此有索引或者无索引,并不能提高查询速度,相反,由于添加了索引,反而减少了系统的维护速度和添加了空间需求。 2、对于那些仅仅有非常少数据值的列也不应该添加索引。这是由于。由于这些列的取值非常少,比方人事表的性别列,在查询的结果中。结果集的数据行占了表中数据行的非常大比例,即须要在表中搜索的数据行的比例非常大。着呢国家索引,并不能明显加快检索速度。

    3、对于那些定义为text、Image和bit数据类型的列不应该添加索引。这是由于,这些列的数据量要么相当大,要么取值非常少。 4、当改动性能远远大于检索性能时,不应该创建索引。这是由于。改动性能和检索性能是互相矛盾的。当添加索引时。会提高检索性能,可是会减少改动性能。当减少索引时。会提高改动性能,减少检索性能,因此,当改动性能远远大于检索性能时,不应该创建索引。 3、创建索引 创建索引有多种方法。这些方法包含直接创建索引方法和间接创建索引的方法,直接创建索引,使用例如以下语句: CREATE [UNIQUE][CLUSTER][INDEX <索引名> ON <表名> (<列名>[<次序>][,<列名>[<次序>]]......)。 说明: 当中<表名>是要创建索引的基本表的名字,索引还能够建立在该表的一列或者多列上,各列之间用逗号分隔,每一个<列名>后面还能够用<次序>指定索引值的排序次序,可选ASC(升序)或者DESC(降序),缺省值为ASC。

    UNIQUE表明此索引的每个索引值值相应唯一的数据记录。

    CLUSTER表示要建立的索引是聚簇索引,所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。 另一种方法创建索引,在表中定义主键约束或者唯一约束时。同一时候也创建了索引,尽管,这两种方法都能够创建索引。可是它们创建索引的详细内容是有差别的:当在表上定义主键或者唯一约束时,假设表中已经有了使用CREATE INDEX语句创建的标准索引的,那么主键约束或者唯一性约束创建的索引覆盖曾经创建的标准索引。也就是说主键约束或者唯一约束创建的索引的优先级高于使用CREATE INDEX语句创建的索引。 eg:为学生-课程数据库中的Student,Course。SC 3个表建立索引,当中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。

    CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
    4、删除索引 索引一经建立,就有系统使用和维护它,不须要用户的干预,建立索引是为了降低查询操作的时间,但假设数据增删改频繁,系统会花费很多时间来维护索引,从而降低了查询效率。这时能够删除一些不必要的索引。 在SQL中。删除索引使用DROP INDEX 语句,其一般格式为: DROP INDEX <索引名>; eg:删除Student表的Stusname索引 DROP INDEX Stusname; 删除索引时,系统会同一时候删除数据字典中删除有该索引的描写叙述。
    5、总结 在RDBMS中索引一般採用B+树、HASH索引来实现。B+树索引具有动态平衡的长处,HASH索引具有查找速度快的特点,索引是关系数据库的内部实现技术。属于内模式的范畴。 用户使用CREATE INDEX语句定义索引时。能够定义索引是唯一索引、非唯一索引或者聚餐索引。至于某一个索引是採用B+树,还是HASH索引则由详细的RDBMS来决定。

    数据库系统概论-[04]索引

    标签:数据检索   唯一索引   自己   效率   删除   为什么   唯一约束   creat   连接   

    热心网友 时间:2022-05-02 00:21

    索引当然是建在表上,索引是为了提高查询速度提供的一种方式,使用不当会有可能降低速度,索引建好了,当查询条件中where后面使用到的列名上有索引,数据库会
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    ...每次文字比较多超出屏幕大小就不知道怎么截屏,求教大佬! 我国政策性 广西明士清医疗器械有限公司怎么样? 广西禾力药业有限公司怎么样? 广西龙母圣商贸有限公司怎么样? 安徽合肥有什么去痔的好地方 我女朋友的谷丙转氨酶过高(达到121),而且两对半检测为阴性,是肝功能有... 泸州丽人女子医院开展科室 自由之子本次世界杯是否将在小组赛中被菜? 世界杯谁会嬴 红豆薏米水排湿的表现 下面的英文句子怎么翻译? 感觉体内湿气很重,喝了薏米红豆粥后,有什么身体反应,喝过的回答 研究成果的英文,研究成果的翻译,怎么用英语翻译研 “研究结果表示”用英语怎么说 拼多多店名加数字不好吗 什么样的活性炭适合鱼缸过滤, 活性炭过滤水有什么作用 ccna现在学还有前途吗? CCNA前景任何??? 化学离子方程式是什么? ccna有前途吗 化学离子反应顺序 归纳初中学习的化学反应哪些可写离子反应 高中化学离子反应? 高一化学离子反应怎么学? 化学离子反应知识 社会体育指导员的工作职责 高中化学 离子反应 离子方程式? 社会体育指导员管理平台和全国体育资格信息官网的区别 喝了红豆薏米。排出来是大便粘稠。是在排湿气吗? 他们的研究结果很可能会在下周公布的英文翻译 请问 现有研究成果 用英语怎么说啊?谢谢! 为什么喝了红豆薏米水后排便很黏? 调查结果的英文怎么说 喝了薏米红豆汤脸上长痘是在排湿毒,还是因为薏米性太寒了? 英语翻译 “这是我们组调查研究后所得到的结果”翻译成英文该怎么说? 初步调查结果的英文怎么说 一些社会学家的调查、研究结果也许能够从客观的角度作出解答用英语怎么说? 调查结果。用英文怎么翻译 喝了红豆薏米水起红色包很痒是排湿的表现吗 请帮我把这段翻译成英文 谢谢 苹果5死机了怎么办? 即使有了很好的现任有一些人还总会怀念很坏的前任,这是为什么? 如果一个女生有男朋友但是还爱着前任男友该怎么办? 苹果5手机卡机黑屏怎么办 苹果5死机之后开不了机怎么办? 怎样在平安银行办理房产二次抵压贷款 平安银行可以房屋二次贷款吗 向平安银行做二次抵押需什么资料