资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1、索引概述 索引是数据库库中重要对对象之一,它类类似于图书图书 的目录录。索引允许许数据库应库应用程序迅速找到表中特定的数据,而不用扫扫描表中全部的数据。在数据库库中,使用索引可以很大程度上提高数据的查询查询 效率,减少查询查询 数据的时间时间 ,改善数据库库的性能。 索引是数据库随机检索的常用手段,它实际上就是记录的关键字与其相应地址的对应表。通过索引可大大提高查询速度。此外,在SQL SERVER中,行的唯一性也是通过建立唯一索引来维护的。表扫描 SQL Server 扫描表的所有页索引 SQL Server 使用索引页找到行SQLServer访问数据的方式:第一页,共31页。重要概念: 企业数据库中,有大量的海量信息性的表格,如果用户在进行查询时采用全表扫描会浪费大量时间,也会造成查询超时错误,可以通过建立索引提高性能。 索引:索引是与表(或视图)关联的页的集合,用于加速从表中检索或者用于强制实施的唯一性。 聚集索引:通过物理上的顺序进行排列而建立索引。 非聚集索引:通过索引表(相当于书的目录)的方法建立索引。第二页,共31页。建立索引参照以下原则: 在经常检索的列上创建索引(如经常在where子句中出现得列)。 在表的主键、外键上创建索引。 在经常用于表间连接的字段上建立索引。一般而言,如下情况的列不考虑在其上创建索引: 在查询中几乎不涉及的列。 很少有唯一值的列(即包含太多重复值得列,如性别字段)。 数据类型为text、ntext或image的列。 只有较少行数的表没有必要创建索引。 当写的性能比查询更重要时,应少建或不建索引。1)为什么要创建索引 使用索引的好处: 帮助提高查询速度。 保证数据记录的唯一性。 加速表与表之间的连接。 表中如果使用ORDER BY和GROUP BY命令进行数据检索时,可以明显地降低查询中分组和排序的时间。第三页,共31页。2)索引的分类 SQL Server 中常用的索引类型:聚集索引非聚集索引唯一索引复合索引索引视图全文索引XML索引 聚集索引:将表中的记录在物理数据页中的位置按索引字段值重新排序,再将重排后的结果写回到磁盘上。一个表只能创建一个聚集索引。 下列情况时可以考虑创建聚集索引:v唯一或包含许多不重复的值。v需要按顺序被访问。v需要保证列在表中的唯一性。v经常用于对表中检索到的数据进行排序。第四页,共31页。 非聚集索引:非聚集索引与表中数据行的物理存储结构无关,因此在创建非聚集索引时不会改变数据表中记录的物理存储顺序。每个表的非聚集索引最多为249个。 下列情况时可以考虑创建非聚集索引:v使用JOIN或GROUPBY子句。应为连接和分组操作中所涉及的列创建多个非聚集索引。v不返回大型结果集的查询。v经常包含在查询中的搜索条件的列。 唯一索引:确保索引键不包含重复的值。聚集索引和非聚集索引都可以是唯一索引。可以创建基于单个字段的唯一索引,也可以对多个字段创建唯一索引。此时要求多个字段的组合取值不能重复,但对其中某个单独字段的取值可以重复。v建立唯一索引的字段最好不允许为空(NOTNULL) 复合索引:在对数据表创建索引时,有时创建基于单个字段的索引不能满足查询要求,这时需要对表创建多个字段的索引,这样的索引称为复合索引。在SQL SERVER系统中一个复合索引中包含的字段最多是16个,并且要求这些字段都属于一个表。第五页,共31页。 索引视图:与表类似,可以在视图上创建索引。默认情况下,视图是非索引的。如果视图基表的数据量很大,并且不常被更新,而在查询中频繁地引用这类视图,可通过对视图创建唯一聚集索引来提高性能。v当在视图上创建索引时,必须首先创建一个唯一的聚集索引,创建聚集索引后,可以为视图添加非聚集索引。 全文索引:一种特殊类型的基于标记的功能性索引,由Microsoft SQL Server全文引擎(MSFTESQL)服务创建和维护。用于帮助在字符串数据中搜索复杂的词。 XML索引:当一个查询是基于XML数据类型列时,为了提高查询速度,SQL Server 允许在XML数据类型的列上创建索引,这种索引称为XML索引。vXML 索引分为两种类型:主XML 索引和辅助XML 索引。v在XML数据类型列上创建的第一个索引必须是主XML 索引。第六页,共31页。2、创建索引 创建索引可以包括以下两种方式:v使用CREATETABLE或ALTERTABLE命令对列定义PRIMARYKEY或UNIQUE约束时系统自动创建索引。v使用CREATEINDEX语句或SQLServerManagementStudio对象资源管理器创建索引。1)使用SQL Server Management Studio创建索引教材P178。2)使用T-SQL语句创建索引使用T-SQL语句创建索引的命令是CREATE INDEX,其语法格式见教材P180。第七页,共31页。示例:为sales数据库中的Product表创建一个唯一聚集索引,依据字段ProductID进行排序。USEsalesGOCREATEUNIQUECLUSTEREDINDEXProID_indexONProduct(ProductID)示例:为sales数据库中的Product表创建一个复合索引,依据字段CategoryID和Price进行排序。USEsalesGOCREATEINDEXC_P_indexONProduct(CategoryID,Price)第八页,共31页。3、管理索引 1)使用SQL Server Management Studio查看、修改和删除索引打开“索引/键”对话框,可以看到当前索引的设置情况,也可以在该窗口中新建索引、修改或删除现有索引。详见教材P181184。第九页,共31页。2)使用Transact-SQL语句查看、修改和删除索引l 查看索引信息,其语法形式如下:sp_helpindexobjname=name示例:利用系统存储过程查看sales数据库中表Product的索引信息。USEsalesGOsp_helpindexProduct用于指定包含索引的表的名称 修改索引名称,其语法形式如下:sp_rename object_name, new_name, object_type示例:将Product表中的索引ProID_index重命名为ID_index。USE salesGOsp_rename Product.ProID_index, ID_index, index第十页,共31页。 删除索引,其语法形式如下:DROPINDEXtable.index|view.index,.n注意:DROPINDEX命令不能删除由CREATETABLE或者ALTERTABLE命令创建的主键或者唯一性约束索引,也不能删除系统表中的索引。示例:删除Product表中的index1和C_P_index两个索引。USEsalesGODROPINDEXProduct.index1,Product.C_P_index表示某个视图中的索引第十一页,共31页。课堂练习(1)在sales数据库中创建一张没有主键的数据表Sale,字段名与Seller表中的一致;(2)给Sale表的SaleID字段创建聚族索引,索引名为ix_1;(3)给Sale表的SaleName字段创建非聚族索引,索引名为ix_2;(4)把索引ix_1重命名为ix_No、ix_2重命名为ix_Name;(5)删除以上所创建的索引;(6)给Sale表的SaleID字段创建聚族索引结构的唯一索引,索引名为u_ix_No。第十二页,共31页。1、视图简介 视图作为一种数据库对象,可以让用户对数据源进行查询和修改。视图的数据源可以是一个或多个表,也可以是其他的视图,这取决于对视图的定义。 视图可以被看成是虚拟表或存储查询。除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中。数据库中存储的是SELECT语句。 用户利用视图对数据进行操作比用户直接对数据源表操作有较多的优势,其主要优点如下: 简化数据操作 数据安全访问机制 自定义所需数据 从多个表中汇总数据 通过视图可以修改数据第十三页,共31页。第十四页,共31页。2、创建视图 用户可以利用SQLServerManagementStudio对象资源管理器和CREATEVIEW命令创建视图。在创建视图前应注意如下原则:v只能在当前数据库中创建视图。但是,如果使用分布式查询定义视图,则新视图所引用的表和视图可以存在于其他数据库甚至其他服务器中。v视图名称必须遵循标识符的规则,且对每个架构都必须唯一。此外,该名称不得与该架构包含的任何表的名称相同。v视图仅当在基表上有SELECT权限是才能被创建。v定义视图的查询不能包含COMPUTE子句、COMPUTEBY子句或INTO关键字。v定义视图的查询不能包含ORDERBY子句,除非在SELECT语句的选择列表中还有一个TOP子句。v不能创建临时视图,也不能对临时表创建视图。第十五页,共31页。2)使用T-SQL语句创建视图使用CREATEVIEW语句创建视图,其语法格式如下:CREATEVIEWschema_name.view_name(column,.n)WITH,.nASselect_statementWITHCHECKOPTION;:=ENCRYPTIONSCHEMABINDING指定视图所属架构的名称 用于指定新建视图的名称 用于指定视图中的字段的名称 用于创建视图的SELECT语句 强制视图上执行的所有数据修改语句都必须符合由select_statement设置的准则 将新建的视图加密 1)使用SQL Server Management Studio创建视图教材P109110。第十六页,共31页。示例:利用Seller表查询销售员的编号、姓名、性别、地址。UsesalesGOCREATEVIEWdbo.V_Seller(编号,姓名,性别,地址)ASSELECTSaleID,Salename,Sex,AddressFROMSeller视图数据查询:SELECT*FROMV_SellerSELECT*FROMV_SellerWHERE编号=s01第十七页,共31页。示例:在sales数据库中创建如下视图:利用Custmoer、Orders、OrderDetail三个表来查询定单数量在50和100之间的客户编号、公司名称、产品编号、定单编号,订单日期,订单数量。CREATEVIEWV_customerASSELECTCustomer.CustomerID,Customer.CompanyName,OrderDetail.ProductID,Orders.OrderIDASOrder_ID,Orders.OrderDate,OrderDetail.QuantityFROMCustomerINNERJOINOrdersONCustomer.CustomerID=Orders.CustomerIDINNERJOINOrderDetailONOrders.OrderID=OrderDetail.OrderIDWHERE(OrderDetail.Quantity50)AND(OrderDetail.Quantity100)第十八页,共31页。示例:在sales数据库中创建如下视图:利用OrderDetail表和Product表查询每种产品销售的总价值。USEsalesGOCREATEVIEWV_Sale_Total(订单编号,产品名称,销售总价值)WITHENCRYPTIONASSELECTOrderID,ProductName,Price*QuantityFROMOrderDetailINNERJOINProductONOrderDetail.ProductID=Product.ProductID视图数据查询:SELECT*FROMV_Sale_TotalSELECT*FROMV_Sale_TotalWHERE产品名称=啤酒第十九页,共31页。3、管理视图
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号