欢迎来到天天文库
浏览记录
ID:36110625
大小:42.50 KB
页数:4页
时间:2019-05-06
《用sqlserver2000索引视图提高性能(下)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用SQLServer2000索引视图提高性能(下)使用“索引微调向导”“索引微调向导”除建议使用基表的索引之外,还建议使用索引视图。使用该向导可提高管理员确定索引和索引视图相结合的能力,从而优化针对数据库执行的典型混合查询的性能。由于“索引微调向导”强制使用所有必需的SET选项(以确保结果集的正确性),其索引视图将会成功创建。不过,如果您的应用程序的选项没有按照要求设置,可能无法利用这些视图。对那些参与索引视图定义的表执行的插入、更新或删除操作可能会失败。维护索引视图SQLServer自动维护索引视图,这与维护任何其它索引的情况
2、类似。对于普通索引而言,每个索引都直接连接到单个表。通过对基础表执行每个INSERT、UPDATE或DELETE操作,索引相应地进行了更新,以便使存储在该索引中的值始终与表一致。索引视图的维护与此类似。不过,如果视图引用了多个表,则对这些表中的任何一个进行更新都需要更新索引视图。与普通索引不同的是,对任何一个参与的表执行一次行插入操作都可能导致在索引视图中进行多次行插入操作。更新和删除操作的情况也是如此。因此,较之于维护表的索引,维护索引视图的代价更为高昂。在SQLServer2000中,某些视图可以更新。如果某个视图可以更新,
3、则使用INSERT、UPDATE和DELETE语句可通过该视图直接修改根本基表。为某个视图创建索引并不会妨碍该视图的更新。有关可更新视图的详细信息,请参阅关于SQLServer2000的“SQLServer联机图书”中的“通过视图修改数据(英文)”。维护成本的考虑因素设计索引视图时应该考虑以下几点:数据库中需要有一个额外的存储空间用于索引视图。索引视图的结果集以类似于典型表存储空间的方式物理保存在数据库中。SQLServer自动维护视图。因此,对定义视图所据的基表的任何更改都可能引起视图索引的一处或多处更改,从而导致维护开销的增
4、加。一个视图获得的净性能提高就是视图提供的查询执行节约总计与存储和维护该视图耗费的成本之间的差。估计视图将占用的所需存储空间要相对简单一些。用SQL查询分析器的“显示估计的执行计划”工具求视图定义中SELECT语句的值。该工具将得出查询返回的行数和行大小的近似值。将这两个值相乘,即可估计出视图的可能大小。不过这只是一个近似值。视图索引的实际大小只能通过创建视图索引来精确得出。从SQLServer执行的自动维护考虑因素的观点出发,“显示估计的执行计划”的功能可能会对此开销的影响有所了解。如果用SQL查询分析器评估修改视图的语句(针
5、对视图的UPDATE语句、针对基表的INSERT语句),SHOWPLAN将包括该语句的维护操作。同时考虑此成本和此操作将在生产环境中发生的次数,可以指示视图维护的可能成本。通常建议对视图或基表进行的任何修改和更新都应该尽可能地成批执行,而不要单独进行。这样可以减少视图维护的某些开销。创建索引视图创建索引视图所需的步骤与视图的成功实现密不可分。确保将在视图中引用的所有现有表的SET选项都正确。创建任何新表和视图之前,确保会话的SET选项已正确设置。确保视图定义是确定的。使用WITHSCHEMABINDING选项创建视图。创建视图的
6、唯一群集索引。使用SET选项以获得一致的结果如果在执行查询时启用不同的SET选项,则在SQLServer中对同一个表达式求值会产生不同的结果。例如,将SET选项CONCAT_NULL_YIELDS_NULL设置为ON之后,表达式'abc'+NULL返回的值是NULL。而将CONCAT_NULL_YIEDS_NULL设置为OFF之后,该表达式得出的结果却是'abc'。索引视图要求多个SET选项的值都固定,以确保这些视图能够得到正确维护并返回一致的结果。只要出现以下情况,就必须将下表中的SET选项设置为要求的值列中所示的值:创建了索
7、引视图。对索引视图中引用的任何表执行了任何INSERT、UPDATE或DELETE操作。查询优化器使用索引视图来生成查询计划。SET选项要求的值默认服务器的值OLEDB和ODBC的值DBLIB的值ANSI_NULLSONOFFONOFFANSI_PADDINGONONONOFFANSI_WARNINGONOFFONOFFARITHABORTONOFFOFFOFFCONCAT_NULL_YIELDS_NULLONOFFONOFFNUMERIC_ROUNDABORTOFFOFFOFFOFFQUOTED_IDENTIFIERONOFF
8、ONOFF如果使用的是OLEDB或ODBC服务器连接,唯一必须修改的值是ARITHABORT的设置。所有DBLIB值都必须使用sp_configure在服务器级上正确设置或使用SET命令从应用程序正确设置。有关SET选项的详细信息,请参阅关于SQLServer2
此文档下载收益归作者所有