作家
登录

关于索引的创建,修改和删除

作者: 来源: 2017-09-22 11:04:21 阅读 我要评论

【沙龙】51CTO诚邀您9月23号和多位技巧大年夜咖一路聊智能CDN的优化之路,抓紧时光哦!


关于索引的创建,修改和删除

索引设计是数据库设计中比较重要的一个环节,对数据库的机能个中至关重要的感化,然则索引的设计却竽暌怪不是那么轻易的工作,机能也不是那么随便马虎就获取到的,很多的技恋人员因为不恰当的创建索引,最后使得其效不雅拔苗助长,可以说“成也索引,败也索引”。

创建、修改和删除索引是属于索引保护部分中的内容,作为数据库对象,索引同样也用CREATE, ALTER和 DROP这三个DDL语句进行操作。但不合的是,对于索引来嗣魅这几个语句所能供给的功能要远远跨越其名字所示,许可你创建、整顿、删除甚至修改索引的metadata。

当你创建或是修改索引时,你可以设置一些参数,这些参数作为索引的一部分存储在体系表中,你可以经由过程sys.indexes体系视图进行查看。当SQL Server萌芽或更新数据以及保护索引时须要这些数据来赞助更好的完全义务。本篇文┞仿将会讲到这些参数,但不会深刻细节。

索引地点的表越大年夜时,对其索引的DLL语句影响也就越大年夜。这个影响表示在对于办事器资本的消费和降低萌芽履行速度。所以经由过程进修当履行DDL或DML语句时,索引内部的履行过程,你可以:

1.懂得为什么经常须要保护索引

2.履行保护操作的过程尽量不降低机能

3.削减保护索引过程对于其它萌芽的影响

4.削减索引保护的频率

创建索引:

我们起首创建集合索引,然后创建非集合索引。

创建集合索引的内部过程取决于当前表的状况以及创建集合索引过程中指定的参数。

假如:

表已经是集合索引了:

产生缺点,一个表中不克不及含有两个集合索引,因为同一时光使得数据按照不呵9依υ?理次序分列是弗成能的。

表是空的:

两个都设置为OFF,或是设置个一一个为OFF,使得在大年夜量负载的情况下削减锁进级。指定则个选项对于大年夜量萌芽,很少更新的索引异常有效。

SQL Server仅仅更新体系表来让本身知道这个表是集合索引构造.不须要分派空间。

表中稀有据,但表膳绫腔有非集合索引:

SQL Server更新体系表来让本身知道这个表是集合索引构造.

SQL Server将表中的行按照索引键的数据进行排序,根据指定的填充因子将数据填充进页,然后生成索引的非叶子节点。这个过程几乎不存在外部碎片。

留意:这个选项仅仅可以在CREATE INDEX中应用。

表中稀有据,表上存在非集合索引:

SQL Server释放由非集合索引占用的所有空间,但不删除其metadata。

SQL Server更新体系表来让本身知道这个表是集合索引构造。

SQL Server创建集合索引(过不雅察膳绫擎)。

是以,如不雅你须要在表上创建多个索引,先建立集合索引,然后再建立非集合索引,如许加倍节俭时光。

创建非集合索引:

表是空的:

1.影响索引创建,但并影响索引应用的选项,大年夜多半选项都属于这一类。

SQL Server仅仅更新体系表来让本身知道这个表上含有非集合索引.不须要分派空间。

表中存在数据:

SORT_IN_TEMPDB:

SQL Server更新体系表来让本身知道这个表上含有非集合索引.不须要分派空间。

SQL Server扫描表,或是其它可以包含这个索引的非集合索引。为表中的每一行创建索引条目,按照索引键排序,根据指定的填充因子将这些条目填充进页,然后生成索引的叶子节点。这个步调几乎不会产生外部碎片。

修改索引:

ALTER INDEX语句可以被用来做如下四件事:

在第8篇关于独一索引的文┞仿说已经说过了。

1.停用索引

2.重建索引

3.整顿索引

4.修改索引选项

留意;ALTER INDEX语句不克不及修改索引中的索引键的组合,如不雅想要实现这点只能经由过程删除索引再建立索引,也可以经由过程CREATE INDEX语句配上DROP_EXISTING选项。

有一些索引选项可以在不消重建或是整顿索引的情况下进行修改。

停用索引:

停用索引只须要应用DISABLE关键字,比如:

  1. ALTER INDEX PK_FragTest_PKCol ON FragTest DISABLE; GO 

停用一个索引并不会使得索引的定义信息大年夜索引表中被移除。所有被停用的索引都可以之后履行重建或删除操作。

停用一个非集合索引可以将非集合索引所占用的空妓晔着出来,是以当索引被停用之后,SQL Server上运行的萌芽就会算作这个索引不存在。

非集合索引经由过程刚才没有删除的metadata进行重建,没有其它选择。非集合索引必须完全重建,因为之前非集合索引的书签指向的是rowid,但如今书签须要存储键值。

对于停用集合索引来说,则是释放掉落集合索引非叶子节点所占用的空间。因为叶子节点就是表本身,所以不会释放叶子节点,但因为没有非叶子节点进行索引,所以被停用的集合索引(也就是表本身)不克不及再用于萌芽或更新。

停用索引涉及到释放磁盘空间,是以这个过程须要一些IO操作以及写入日记文件。

DATA_COMPRESSION:

存在索引停用的最重要的目标是为了节俭磁盘空间。假如重建索引的时刻一向用索引,则SQL Server须要保护两个版本的索引,新建的索引成功后才会删除老索引,是以造成磁盘空间的浪费。而重建索引之前起首删除索引的话,就能剩下磁盘空间了。平日来说,重建一个已江山除的索引须要的空间是重建没有删除索引的五分之一。


  推荐阅读

  机会!电商与传统零售逐渐融合,零售业总额五年增12万亿

【沙龙】51CTO诚邀您9月23号和多位技巧大年夜咖一路聊智能CDN的优化之路,抓紧时光哦!   国度统计局14日宣布的数据显示,本年1-8月份,社会花费品零售总额232308亿元,同比增长10.4%,与>>>详细阅读


本文标题:关于索引的创建,修改和删除

地址:http://www.17bianji.com/lsqh/37578.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)