- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目八 视图与索引的创建与维护8.2项目目的 通过本项目的学习掌握索引的概念、创建、统计、删除、维护和管理等操作;掌握视图的建立、修改、使用和删除操作;并能通过视图查询数据,修改数据,更新数据和删除数据。8.3 项目内容与要求用SSMS在图书表book上为列bookName建立名为”bn_index”的非聚集索引。在图书表book上为列(price和stocks)建立名为“price_stock_index”的复合索引。为表publisher创建一个基于列publisherName的唯一、聚集索引pn_index。创建两个测试表test1(id, test),test2(id, test),其中两个表的id是自动增长的列,test的类型为INT。向表test1中插入50万行随机数据,并将数据复制到test2中。进行如下测试。在test1没有建立索引的情况下,查询其中的数据,检查使用时间。在test1上建立基于列test的非聚集索引,查询其中的数据,检查使用时间。在test2上建立基于列test的聚集索引,查询其中的数据,检查使用时间。 比较上述三次测试的时间。更改表test1索引test1_index为t1_index,并删除表test2的索引test2_index。使用SSMS,基于图书表book中publisherID为“0001”的数据创建视图v_bsd_book,并向该视图中插入数据。建立订单信息视图v_order,内容为当天0点以来所有的订单的信息,查询其中订书总数大于50的订单信息。对视图v_order进行加密。删除视图v_order。8.4 项目指导1. 创建索引2. 索引的效果测试3. 查看和删除索引4. 视图的创建与使用1. 创建索引任务1:使用SSMS在图书表book上为列bookName建立名为“bn_index”的非聚集索引。(1)启动SSMS,在对象资源管理器中,找到索引的表,点开该节点,找到索引子节点。,右击“索引”节点并在弹出的菜单中选择“新建索引”命令,打开“新建索引”对话框,如图8-1.(2) 在“常规”选项卡中,输入索引名称“bn_index”,并选择索引类型为“非聚集”,如果需要建立唯一索引,则选中“唯一(Q)”的复选框。单击“添加(A)…”按钮,添加索引键列。图8-1 “新建索引” 对话框(3)在弹出的选择列的对话框中选择bookName作为键列,并单击“确定”按钮,如图8-2所示。(4)回到建立索引的窗口后,单击“确定”按钮。图8-2 添加键列任务2:在图书表book上为列(price和stocks)建立名为“price_stock_index”的复合索引。创建该索引的SQL语句为:CREATE INDEX price_stock_indexON book(price,stocks)?任务3:为图书表publisher创建一个基于列publisherName的唯一、聚集索引pn_index。创建该索引的SQL语句为:CREATE UNIQUE CLUSTERED INDEX pn_indexON publisher(publisherName)2. 索引的效果测试任务4:创建两个测试表test1(id, test),test2(id, test),其中两个表的id是自动增长的列,test的类型为int。向表test1中插入50万行随机数据,并将数据复制到test2中。并进行测试。(1)创建表和索引的SQL语句:USE BookStore;GO--创建表test1CREATE TABLE test1(id INT IDENTITY(1,(1) NOT NULL,test INT)GO--创建表test2CREATE TABLE test2(id INT IDENTITY(1,(1) NOT NULL,test INT)GO--为test2建立基于test列的聚集索引CREATE CLUSTERED INDEX test2_indexON test2(test)(2)插入50万行数据--向表test1插入万行小于万的数据DECLARE @i INTSELECT @i=1WHILE(@i=500000)BEGIN INSERT INTO test1 (test) values(ROUND(RAND()*1000000,0)) SET @i=@i+1ENDGO--将test1的数据复制到test2中INSERT INTO test2SELECT * FROM test1GO(3)进行测试,对三种不同情况进行相同的的测试:查询其中小于500的数据项--未建立索引查询test1DECLARE @d DATETIMESET @d=getdate()SELECT * FROM test1 WHERE
文档评论(0)