ms sql入门基础-创建索引--

ms sql入门基础-创建索引--

ID:9499223

大小:57.50 KB

页数:6页

时间:2018-05-01

上传者:U-991
ms sql入门基础-创建索引--_第1页
ms sql入门基础-创建索引--_第2页
ms sql入门基础-创建索引--_第3页
ms sql入门基础-创建索引--_第4页
ms sql入门基础-创建索引--_第5页
资源描述:

《ms sql入门基础-创建索引--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

  MSSQL入门基础:创建索引>>  8.2.1用CREATEINDEX命令创建索引  CREATEINDEX既可以创建一个可改变表的物理顺序的簇索引,也可以创建提高查询性能的非簇索引。其语法如下:  CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]  INDEXindex_nameON{table|vien[ASC|DESC][,...n])  [PDB]  ]  [ONfilegroup]  各参数说明如下:UNIQUE  创建一个惟一索引,即索引的键值不重复。在列包含重复值时,不能建惟一索引。如要使用此选项,则应确定索引所包含的列均不允许NULL值,否则在使用时会经常出错。CLUSTERED  指明创建的索引为簇索引。如果此选项缺省,则创建的索引为非簇索引。NONCLUSTERED  指明创建的索引为非簇索引其索引。数据页中包含了指向数据库中实际的表数据页的指针。index_name   指定所创建的索引的名称。索引名称在一个表中应是惟一的,但在同一数据库或不同数据库中可以重复。table  指定创建索引的表的名称。必要时还应指明数据库名称和所有者名称。vien  指定被索引的列。如果使用两个或两个以上的列组成一个索引,则称为复合索引。一个索引中最多可以指定16个列,但列的数据类型的长度和不能超过900个字节。PAD_INDEX  指定填充索引的内部节点的行数,至少应大于等于两行。PAD_INDEX选项只有在FILLFACTOR选项指定后才起作用。因为PAD_INDEX使用与FILLFACTOR相同的百分比。缺省时,SQLServer确保每个索引页至少有能容纳一条最大索引行数据的空闲空间。如果FILLFACTOR指定的百分比不够容纳一行数据S,QLServer会自动内部更改百分比。FILLFACTOR=fillfactor  FILLFACTOR称为填充因子,它指定创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。它其实同时指出了索引页保留的自由空间占索引页大小的百分比。即100-fillfactor。 对于那些频繁进行大量数据插入或删除的表在建索引时应该为将来生成的索引数据预留较大的空间,即将fillfactor设得较小,否则,索引页会因数据的插入而很快填满,并产生分页,而分页会大大增加系统的开销。但如果设得过小,又会浪费大量的磁盘空间,降低查询性能。因此,对于此类表通常设一个大约为10的fillfactor。而对于数据不更改的、高并发的、只读的表,fillfactor可以设到95以上乃至100。  如果没有指定此选项,SQLServer默认其值为0。0是个特殊值,与其它小FILLFACTOR  值(如:1,2)的意义不同,其叶节点页被完全填满,而在索引页中还有一些空间。可以  用存储过程Sp_configure来改变默认的FILLFACTOR值。IGNORE_DUP_KEY  此选项控制了当往包含于一个惟一约束中的列中插入重复数据时SQLServer所作的反应。当选择此选项时,SQLServer返回一个错误信息,跳过此行数据的插入,继续执行下面的插入数据的操作:当没选择此选项时,SQLServer不仅会返回一个错误信息,还会回滚(RollsBack)整个INSERT语句(关于回滚,请参见数据库更新章节中的事务一节)。DROP_EXISTING   指定要删除并重新创建簇索引。删除簇索引会导致所有的非簇索引被重建,因为需要用行指针来替换簇索引键。如果再重建簇索引,那么非簇索引又会再重建一次,以便用簇索引键来替换行指针。使用DROP_EXISTING选项可以使非簇索引只重建一次。STATISTICS_NOREPUTE  指定分布统计不自动更新。需要手动执行不带NOREPUTE子句的UPDATESTATISTICS命令。SORT_IN_TEMPDB  指定用于创建索引的分类排序结果将被存储到Tempdb数据库中。如果Tempdb数据库和用户数据库位于不同的磁盘设备上,那么使用这一选项可以减少创建索引的时间,但它会增加创建索引所需的磁盘空间。ONfilegroup  指定存放索引的文件组。注意:数据类型为TEXT、NTEXT、IMAGE或BIT的列不能作为索引的列。  由于索引的宽度不能超过900个字节,因此数据类型为CHAR、VARCHAR、BINARY和VARBINARY的列的列宽度超过了900字节,或数据类型为NCHAR、NVARCHAR的列的列宽度超过了450个字节时也不能作为索引的列。  在使用索引创建向导创建索引时,不能将计算列包含在索引中,但在直接创建或使用CREATEINDEX命令创建索引时,则可以对计算机列创建索引,这在SQLServer2000以前的版本中是不允许的,算得上是一大改进。   例8-1:为表products创建一个簇索引。  createuniqueclusteredindexpk_p_id  onproducts(p_id)  with  pad_index,  fillfactor=10,  ignore_dup_key,  drop_existing,  statistics_norepute  on[pr12下一页>>>>这篇文章来自..,。imary]  例8-2为表products创建一个复合索引  createindexpk_p_main  onproducts(p_id,p_name,sumvalue)--其中sumvalue是一个计算列表达式为price*quantity  ary]  例8-3创建一个视图并为它建一个索引  createvieabinding  as  selecttop100percentemp_id,e_name,birthday,hire_date,year(getdate())   -year(hire_date)asdbo.employee  orderbyp_id_viep_id)  8.2.2用EnterpriseManager创建索引。  在EnterpriseManager中创建索引有两种方法  1用索引创建向导创建索引  创建方法如下:  (1)在目录树中选择要创建索引的表所在的数据库,点击任务板中的向导页面  anageIndexes选项,将会出现如图8-9所示的索引管理对话框,其中列出了表中已经存在的索引。选择NeSSQL入门基础教程>>>>>上一页12>>>>这篇文章来自..,。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭