VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > sql数据库 >
  • sql语句大全之删除索引

删除索引
也有索引是多余的而需要从表中删除的时候。删除索引只需要简单执行DROP INDEX语句,后面跟上表名和索引名。谨记,对于每一个数据修改操作,都需要为每一个存在的索引花费处理时间,以保证索引是最新的。因此,当使用相同的列创建索引时,或者当索引不再能提供快速的数据访问因而被SQL Server忽略时,应该把它删除掉。
注解 如果索引用于主键或具有唯一性约束,就无法直接删除它。在这种情况下,必须使用DROP CONSTRAINT命令。从表中删除约束,也会从表中删除索引。
练习:在查询编辑器中删除索引
(1) 如果要删除在上节中所创建的索引,所要做的全部事情就是执行下面的代码。它会从SQL Server中删除该索引,也会将同索引相关联的统计信息一并删除。
http://images.51cto.com/files/uploadimg/20090515/131345772.jpg
 
 
(2) 在运行后,可以看到每件事都被正确执行了。
命令已成功完成。
(3) 不要忘记通过运行下面的代码来重建索引:
http://images.51cto.com/files/uploadimg/20090515/131414236.jpg
 
 
在下一节,我们会学习如何修改索引。

6.7  在查询编辑器中修改索引
与修改表的操作不同,不能使用ALTER命令来更新索引中所包含的列。要进行这类操作,首先要删除索引,再重建它。DROP命令可以从表中物理地删除索引,如果要重建相同的索引,则在删除索引之前,应该确保知道索引中所包含的内容。
注解 在SSMS中,可以从索引的定义中删除列,而无需删除和重建索引,删除和重建操作是在后台由SQL Server自动完成的。
下一个练习用于说明删除索引再重建索引的步骤。你可以学习到如何在两个步骤(而不是三个步骤)之内完成该操作。
练习:在查询编辑器中修改索引
(1) 首先,假设我们要创建一个索引,以帮助我们在指定时间及时提取特定的股票价格。这需要在数据查询中使用股票ID和要查询价格的日期,下面的代码就可以让索引实现该目的(由于这段代码暂时还不完整,请不要运行):
http://images.51cto.com/files/uploadimg/20090515/131600344.jpg
 
 
(2) 然而,最好让PriceDate降序,这样最新的价格总是在最前面,而查询是为了知道最新的价格。通过将该列加入到索引中,SQL Server就只读取最新的一行,而不是像以前那样,随着越来越多的价格记录被创建,需要读取越来越多的行。将Price列本身也放入到索引中对性能是有利的。这可以避免在从聚集索引的信息列中提取数据的时候,对数据进行第二次读取。
注解 记住,聚集索引中包含了数据,而没有指向数据的指针。然而,在本例中,若没有Price列,则会进行第二次读取。
http://images.51cto.com/files/uploadimg/20090515/131620813.jpg
 
 
注解 如果不小心运行了第一段代码,则设置DROP_EXISTING = ON。
(3) 现在运行代码,可以看到下面的结果。
命令已成功完成。
通过在CREATE INDEX命令中使用DROP_EXISTING子句,可以在一个(而不是两个)执行操作中修改索引。这会删除索引然后再重建它。
注解 在构建索引的时候要小心。有可能对同一列多次设置相同的顺序,这样就会使用不同的索引名称多次创建同一索引。这浪费了时间,也会给SQL Server带来不必要的负担。然而,在将一个已经被包含在聚集索引中的键列包含在非聚集索引中的时候,因为行指针实际上指向的是聚集索引键,所以SQL Server会足够聪明,不会将该信息在非聚集索引中再次保存,在聚集索引键被用在非聚集索引中的时候,可以明确定义其顺序。
还要构建更多的索引,但是我们将在后面再进行介绍。

6.8  当索引不存在时
随着数据库中数据量的增加,可能会在意想不到的地方出现扩展。最初和数据库一起构建的应用程序可能有了扩充,这样一来,最初的数据库设计和索引决策或许不再完全正确。潜在的问题是,数据库中查询所涉及的数据上不存在适合的索引。
当SQL Server访问数据时,它使用查询优化器来产生查询计划。查询计划是一个操作计划,SQL Server使用查询计划来执行你所构建的针对数据的查询。查询计划由若干步骤组成,SQL Server完成这些步骤来执行查询并生成需要的结果。在第12章中讨论高级T-SQL时,将给出查询计划的概述。在考虑查询计划时,需要确定哪一个是执行查询筛选的最优索引。
 

6.8  当索引不存在时
随着数据库中数据量的增加,可能会在意想不到的地方出现扩展。最初和数据库一起构建的应用程序可能有了扩充,这样一来,最初的数据库设计和索引决策或许不再完全正确。潜在的问题是,数据库中查询所涉及的数据上不存在适合的索引。
当SQL Server访问数据时,它使用查询优化器来产生查询计划。查询计划是一个操作计划,SQL Server使用查询计划来执行你所构建的针对数据的查询。查询计划由若干步骤组成,SQL Server完成这些步骤来执行查询并生成需要的结果。在第12章中讨论高级T-SQL时,将给出查询计划的概述。在考虑查询计划时,需要确定哪一个是执行查询筛选的最优索引。
 


相关教程