数据库优化工程师必看 第一部分(索引、视图)
admin
2023-06-06 23:01:36
0

数据库优化工程师必看 第一部分(索引、视图)

防伪码:勤劳一日,可得一夜安眠;勤劳一生,可得幸福长眠

       在本章技术详解之前,先分享一个今天晚上和一个做IT的学弟的沟通总结:

我们从八点多聊到十点 ,他主要做Linux高级运维,大部分时间还是做数据库的一些工作, 按理说还是我的小师弟 。哈哈。 他说, 刚毕业从一家外资高新技术企业跳糟到一家国企,工资涨了小2000,现在税后也是8500。 但是,他非常后悔。我说以前的公司该是多么强大,让你宁可每个月少挣好几千也想回到以前的公司, 他说老表,工资不是衡量一个人价值的唯一标准, 给你举例说明你就知道这个公司有多厉害了 ,这家公司叫青牛(北京)技术有限公司,主要做融合网络的 最重要的是大多数的员工,自主的要求无偿加班,回忆起我以前刚毕业在那家软件公司上班的情景,总之效率特别高,例如经理下达一个命令到技术部,要求中午下班之前完成,六七个部门的员工帮我一起完成,而我现在在xx国企,想做个备份,不知道秘钥号码,问经理、测试工程师、问遍了,哎, 等我知道了秘钥号,本来上午十点可以做完的事情。 结果,下午两点才刚刚开始 ,如果给我一次重新选择的机会,我一定选择拥有强大战斗力和文化底蕴的公司,我在青牛仿佛看到了未来的第二个阿里巴巴集团。我其实总结一下 就是:眼光决定格局 选择决定未来 用我恩师的话说:公司文化的力量很大程度上决定他能走多远飞多高!

   现在是凌晨0:54分,我们正式开始索引和视图的详解,希望就像博客昵称“一盏烛光“那样,去帮助更多的人解决实际问题,谢谢各位的支持。我将持续更新更多原创技术文档。

实验案例一:创建数据库并使用索引查询学生考试成绩(多种表格在T-SQL查询语句 第二部分 此处略)

select Student.StudentName,Subject.SubjectName,Result.ExamDate,Result.StudentResult

from Subject,Student,Result  with(INDEX=aaa)  注:INDEX=aaa,即索引=索引名

where Result.SubjectId=Subject.SubjectId and Result.StudentNo=Student.StudentNo and Result.StudentResult between 80 and 90

注:INDEX=aaa,即索引=索引名。虽然可以指定SQL Server按哪个索引进行数据查询,但一般不需要人工指定,SQL Server将会根据所创建的索引,自动优化查询。其实,使用索引可加快数据检索速度,但为每个列都建立检索没有必要。因为检索自身也需要维护,并占用一定资源。

案例二:验证索引的作用

 

1、 首先创建一个数据量大的表,名称为“学生表”,分别有三列,学号,姓名和班级,如下图所示,学号为自动编号,班级为默认值“一班”。

数据库优化工程师必看 第一部分(索引、视图)

2、 向表中插入大量数据,数据越多,验证索引的效果越好。

使用语句完成:While 1>0  Insert into 学生表(姓名)  values(‘杨文)

上面语句是一个死循环,除非强制结束,如果1大于0就会一直向表中插入姓名

如下图所示:

数据库优化工程师必看 第一部分(索引、视图)

3、等待5分钟左右,打开表的属性,查看表的行数1030550,当前为如下图所示:

数据库优化工程师必看 第一部分(索引、视图)

我们可以右击,选择前1000行,效果如下:

数据库优化工程师必看 第一部分(索引、视图)

4、使用语句查询第900000行的数据,Select * from 学生表 Where 学号=900000

数据库优化工程师必看 第一部分(索引、视图)

5、打开“sql server profiler ”工具进行跟踪,如下图所示:

打开“sql server profiler ”工具查看跟踪的信息,发现查询时间很长,cpu工作了359毫秒,reads:读了8630次,writes:写了9次,duration:总计花费649毫秒完成查询。

数据库优化工程师必看 第一部分(索引、视图)

6、为了下面分析文件更准确,多执行几次Select * from 学生表 Where 学号=900000

然后把跟踪的结果保存在桌面上:

数据库优化工程师必看 第一部分(索引、视图)

注:这里选择第一项 ,跟踪文件。然后保存至桌面,效果如下:

数据库优化工程师必看 第一部分(索引、视图)

7、 打开“数据库引擎优化顾问”,添加跟踪文件,进行分析,发现索引建议,需要建立索引。

数据库优化工程师必看 第一部分(索引、视图)

注意:选择benet数据库中的学生表,然后点击“开始分析”

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

索引类型为clusterd(聚集索引),索引列为“学号”。

8、 按照“数据库引擎优化顾问”的索引建议建立聚集索引,并且选择“唯一”

数据库优化工程师必看 第一部分(索引、视图)

9、 再次执行Select * from 学生表Where 学号=900000

10、 打开sql server profiler查看跟踪的时间,发现查询时间大幅提升,说明索引可以提高查询速度。

数据库优化工程师必看 第一部分(索引、视图)

发现总计时间为1毫秒,几乎忽略不计,以至于几乎不花时间立即查询

案例四:分别练习创建各种索引

首先我们先来了解一下索引的分类以及选择索引列的注意事项:

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

我们掌握了学术性的理论后,将进行详细的试验操作来进一步巩固:


1、 创建聚集索引

目前tstudent表中没有任何索引也没有主键

数据库优化工程师必看 第一部分(索引、视图)

为tstudent表创建聚集索引

数据库优化工程师必看 第一部分(索引、视图)

选中studentID,单击左上侧的主键按钮

数据库优化工程师必看 第一部分(索引、视图)

为Tstuden表的studentID创建主键就同时创建了聚集索引

数据库优化工程师必看 第一部分(索引、视图)

2、创建组合索引

为成绩表创建组合索引,因为一个学生不能为一门学科录入两次成绩,所以将成绩表中的studentID和subjectID创建组合索引

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

3、用命令创建聚集索引

创建一个表TS

create TABLE TS(

StudentID varchar(10)NOT NULL,

Sname varchar(10)DEFAULT NULL,

sex char(2)DEFAULT NULL,

cardID varchar(20)DEFAULT NULL,     注意:实际工作中建议从简从快,保证质量,这些语法可拓展练习

Birthday datetime DEFAULT NULL,

Email varchar(40)DEFAULT NULL,

Class varchar(20)DEFAULT NULL,

enterTime datetime DEFAULTNULL

)

Go

用命令创建聚集索引

create clustered index CL_studentID

on TS(studentID)

创建聚集索引不一定创建主键,如下图所示:

数据库优化工程师必看 第一部分(索引、视图)

4、创建唯一索引

创建唯一性约束的时候就会创建唯一性索引,不能有重复值

为Tstudent表创建唯一非聚集索引

create unique nonclustered index U_cardID on TStudent(cardID)

数据库优化工程师必看 第一部分(索引、视图)

5、创建非聚集索引---可以有重复值

Tstudent表的姓名列创建非聚集索引

数据库优化工程师必看 第一部分(索引、视图)

使用命令查看表上的索引

Select from sys.sysindexes where id=(select object_id from sys.all_objects where

name='Tstudent')

Indid中1代表聚集索引

Indid中2代表唯一非聚集索引

Indidz中3代表非聚集索引

数据库优化工程师必看 第一部分(索引、视图)

二、视图

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

数据库优化工程师必看 第一部分(索引、视图)

在这里,一些举例试验就不再一一演示了,因为,在我看来,作为一名数据库管理员,必须要掌握数据库优化这项技能。

最好掌握一些基本的通用语法,虽说视图是个变量,随时更新变化,用起来很方便简洁,可直接在其基础上直接

执行:

例如

select * from 视图名

where 条件=xxx

很方便,但是视图毕竟有局限性,在性能和修改限制方面有待提高。


相关内容

热门资讯

香江警花,即将绽放于星空之间 潮新闻客户端 记者 屠晨昕 今天(23日)上午,神舟二十三号载人飞行任务新闻发布会,给了整个香港乃至...
美官员披露美伊即将签署协议的更... △霍尔木兹海峡(资料图)据美国方面23日消息,美国和伊朗即将达成一份协议,其中包括将停火再延长60天...
现代AI系统通过图灵测试首获证... 美国加州大学圣迭戈分校科学家开展了一项实证研究,首次证明现代人工智能(AI)系统通过了图灵测试。相关...
强劲“中国心” 国产自研600... 5月23日,内蒙古锡林郭勒盟上空传来轰鸣声:由我国自主研制的600公斤推力级F406涡扇发动机,双发...
留神峪矿难获救矿工讲述:自救器... 5月22日晚7时29分,山西留神峪煤矿发生瓦斯爆炸事故,已致82人死亡。据央视新闻,事故发生后,留神...
预祝圆满成功!李家超与黎家盈视... 据凤凰卫视报道,神舟二十三号载人飞船即将发射,乘组成员包括首位来自香港的航天员黎家盈。香港特区行政长...
《给阿嬷的情书》,票房超10亿... 据网络平台数据截至5月24日,2026年度电影总票房(含预售)已突破151亿元!其中,电影《给阿嬷的...
美媒称伊朗同意放弃高浓缩铀库存 新华社华盛顿5月23日电(记者黄强 颜亮)据美国媒体23日报道,作为美国与伊朗即将达成的协议中的一个...
全自动洗衣机进水管漏水怎么办 造成全自动洗衣机进水管漏水,要根据原因寻找解决办法,1、由于洗衣机进水管使用年限过长,部分出现损坏,...
电视机闪屏一下又黑屏 问答:1、电视显示屏出现短路或损坏等问题。2、电视的信号源出现干扰。3、电视内部的小零件损坏,如屏幕...