数据库索引及查询效率分析.docx
- 文档编号:3818789
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:24
- 大小:984.34KB
数据库索引及查询效率分析.docx
《数据库索引及查询效率分析.docx》由会员分享,可在线阅读,更多相关《数据库索引及查询效率分析.docx(24页珍藏版)》请在冰豆网上搜索。
数据库索引及查询效率分析
信息学院
实验报告
学号:
114100136
姓名:
熊忠飞
班级:
11B
课程名称:
大型数据库管理系统
实验名称:
索引及查询效率分析
实验性质:
验证性实验
实验时间:
2013年5月2日
实验地点:
睿智4号楼212B区
一、实验目的
1、理解索引的概念和作用。
2、掌握索引的创建、更改和删除的方法。
3、了解索引前和索引后查询执行计划的差异。
4、掌握维护索引的方法。
二、实验内容及要求
1、使用对象资源管理器创建、管理索引
(1)为员工表创建一个索引名为“emp_id”的唯一性非聚集索引,索引关键字是“员工号”,填充因子80%。
(2)重命名索引,将索引“emp_id”重命名为“员工表_员工号”。
③删除索引“员工表_员工号”。
2、使用T-SQL语句创建、管理索引
(1)为员工表创建一个索引名为“emp_id”的唯一性非聚集索引,索引关键字是“员工号”,填充因子80%。
(2)重命名索引,将索引“emp_id”重命名为“员工表_员工号”。
(3)为员工参与项目表创建一个索引名为“员工_项目_index”的非聚集复合索引,索引关键字为“员工号”,升序,项目编号,降序,填充因子50%。
(4)删除索引“员工表_员工号”和“员工_项目_index”。
3、索引前后的执行计划
(1)删除员工表中员工号上的主键。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表和员工参与项目表中的员工号都没有索引)
(2)为员工参与项目表创建一个索引名为“员工参与项目_员工号”的非聚集索引,索引关键字为“员工号”,升序;按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号没索引,员工参与项目表中的员工号有非聚集索引)
(3)重建员工表中员工号上的主键,删除“员工参与项目_员工号”的非聚集索引。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号有聚集索引,员工参与项目表中的员工号没有非聚集索引)
(4)为员工参与项目表创建一个索引名为“员工参与项目_员工号”的非聚集索引,索引关键字为“员工号”,升序。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号有聚集索引,员工参与项目表中的员工号有非聚集索引。
)
三、实验步骤及结果
(一)使用对象资源管理器创建、管理索引
1、为员工表创建一个非聚集型索引
(1)打开SQLServer2005,在对象资源管理器中,展开“xmgl”数据库,选择员工表结点并单击右键,在快捷菜单中选择“修改”。
如图:
(2
(2)在设计器窗口中单击右键,在快捷菜单中选择“索引/键”,则出现新建索引对话框。
如图:
(3
(4(3)单击“添加”按钮,系统自动给出新索引名,在“标示”里重新命名为“emp_id”,然后在“常规”中选择要索引的关键字“员工表”,在填充因子中输入“80”。
如图
(5
(6(4)单击“关闭”按钮,索引创建完毕。
(72、重命名索引,将索引“emp_id”重命名为“员工表_员工号”。
(8展开员工表,选择“索引”并打开,再选中“emp_id”,单击右键出现如图下拉菜单,选择“重命名”,输入“员工表_员工号”,即可重命名。
(9
(103、删除索引“员工表_员工号”。
(11
(1)如上图,选择删除,则完成索引的删除工作。
(12
(2)a、在对象资源管理器中,展开“xmgl”数据库,选择员工表结点并单击右键,在快捷菜单中选择“修改”。
(13b、在设计器窗口中单击右键,在快捷菜单中选择“索引/键”。
(14c、在选定的索引列表中选择要删除的索引“员工表_员工号”,单击“删除”按钮,再单击“关闭”按钮完成索引的删除工作。
(15
(二)使用T-SQL语句创建、管理索引
(161、为员工表创建一个索引,如下:
usexmgl
go
createuniquenonclusteredindex
emp_idon员工表(员工号)
with(fillfactor=80)
(17
(182、重命名索引,如下:
usexmgl
go
sp_rename'员工表.emp_id','员工表_员工号'
(19
(203、为员工参与项目表创建一个索引,如下:
usexmgl
go
createnonclusteredindex员工_项目_index
on员工参与项目表(员工号asc,项目编号desc)
(21with(fillfactor=50)
(22
(234、删除创建的两个索引,如下:
usexmgl
go
dropindex员工表.员工表_员工号
dropindex员工参与项目表.员工_项目_index
(24
(三)索引前后的执行计划
1、删除员工表中员工号上的主键。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表和员工参与项目表中的员工号都没有索引。
)
select姓名,项目名称,职责
from员工表,项目表,员工参与项目表
where员工表.员工号=员工参与项目表.员工号
and项目表.项目编号=员工参与项目表.项目编号
观察执行计划:
I/O=0.003125+0.003125+0.003125=0.009375。
CPU开销=0.0000042+0.000046+0.0001581+0.0001691+0.0001581=0.0005355。
2、为员工参与项目表创建一个索引名为“员工参与项目_员工号”的非聚集索引,索引关键字为“员工号”,升序;按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号没索引,员工参与项目表中的员工号有非聚集索引)
createnonclusteredindex员工参与项目表_员工号
on员工参与项目表(员工号asc)
with
fillfactor=80
select姓名,项目名称,职责
from员工表,员工参与项目表,项目表
where员工表.员工号=员工参与项目表.员工号
and项目表.项目编号=员工参与项目表.项目编号
观察执行计划:
I/O=0.003125+0.003125+0.003125=0.009375。
CPU开销=0.0178557+0.0000836+0.0001691+0.000179+0.0001581=0.0184455。
3、重建员工表中员工号上的主键,删除“员工参与项目_员工号”的非聚集索引。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号有聚集索引,员工参与项目表中的员工号没有非聚集索引)
dropindex员工参与项目表.员工参与项目表_员工号
select姓名,项目名称,职责
from员工表,员工参与项目表,项目表
where员工表.员工号=员工参与项目表.员工号
and项目表.项目编号=员工参与项目表.项目编号
观察执行计划:
I/O=0.003125+0.003125+0.003125=0.009375。
CPU开销=0.0000042+0.000046+0.0001581+0.0001691+0.0001581=0.0005355。
4、为员工参与项目表创建一个索引名为“员工参与项目_员工号”的非聚集索引,索引关键字为“员工号”,升序。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号有聚集索引,员工参与项目表中的员工号有非聚集索引)
createnonclusteredindex员工参与项目表_员工号
on员工参与项目表(员工号asc)
with
fillfactor=80
select姓名,项目名称,职责
from员工表,员工参与项目表,项目表
where员工表.员工号=员工参与项目表.员工号
and项目表.项目编号=员工参与项目表.项目编号
观察执行计划:
I/O=0.003125+0.003125+0.003125+0.003125=0.009375。
CPU开销=0.0178557+0.0000836+0.0001691+0.000179+0.0001581=0.0184455。
四、实验小结
通过本实验,掌握了索引的概念和作用,知道了创建唯一索引可以保证数据记录的唯一性,其次还知道了索引可以大大加快数据检索速度。
学会了用对象资源管理器和T-SQL语句创建、更改和删除索引的方法,同时还了解了索引前和索引后查询计划的差异。
在实验过程中,对T-SQL语句创建索引,要知道各代码的含义,这样才能完整无误的创建索引。
其次就是查询中的执行计划,在查看查询执行计划的信息时按“Ctrl+L”查询。
五、教师评价
年月日
注:
每学期至少有一次设计性实验。
每学期结束请任课老师按时按量统一交到教学秘书处。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 索引及查询效率分析 索引 查询 效率 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)