技术大讲堂(五)学习总结
技术大讲堂已经开展到第五期了,同学们在不断的学习和教员老师谆谆教导下学到了很多课外的知识和技术,这次技术课是由周玲老师主讲,由S291的甄佳同学主持的.主要内容是SQL查询性能优化,通过这堂课我们可以学会,在以后的学习和做项目的过程中应该如何写出高性能的SQL语句.
首先,我们要知道SQL Server中性能的影响因素有:
1.查询语句的写法:
(1).查询优化器与SARG
(2)SQL高级查询优化
2.索引的设计
(1)聚集索引或非聚集索引
(2)结合实际,谈索引使用的误区
(3)SQL性能测试工具
3.表的设计
在了解了大致状况之后,我们需要做的就是细致的分化:
首先,在查询分析阶段,查询优化器查看查询的每个阶段并决定限制需要扫描的数据量是否有用。如果一个阶段可以被用作一个扫描参数(SARG),那么就称之为可优化的,并且可以利用索引快速获得所需数据。SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值的范围内的匹配或者两个以上条件的AND连接。
其次,在了解了这个概念之后,我们就要分析SARG中鱼SQL语句的具体关系:
SARG (一):Like、OR、IN
SARG (二):非操作符、函数
其他关键字的影响
(详细情况请大家在"佳音快讯"中进行下载学习)
再次,SQL高级查询优化:
1.多表查询的优化原则:多表比较的次数越少,性能越高
2.内联、左外联、右外联,先以离from最远的表为驱动表,在写SQL语句时, 尽量把数据量小的表放在离from远的地方,但SQL Server有自己的优化 器,它会对SQL语句进行优化,所以用户不用太关心
再次,查询优化器:Join操作:
1.原则:两表比较的次数越少,性能越高
2.三种算法:Nested Loop Join(嵌套循环联结),Sort-Merge Join (排序合并联结), Hash Join (哈希联结)
3.下面总结一下三种算法的使用:(具体算法参详"佳音快讯"中技术课专栏)
a) Nested Loop Join(嵌套循环联结):
i. 适用于一个集合大而另一个集合小的情况(将小集合做为外 循环),I/O性能不错。
ii. 当外循环输入相当小而内循环非常大且有索引建立在JOIN字段上时,I/O性能相当不错。 iii. 当两个集合中只有一个在JOIN字段上建立索引时,一定要将该集合作为内循环。
iv. 对于一对一的匹配关系(两个具有唯一约束字段的联结),可以在找到匹配元组后跳过该次内循环的剩余部分(类似于编程语言循环语句中的continue)。
b) Sort-Merge Join (排序合并联结)
i. 可以考虑在两个结果集都很大情况下使用,最好能有聚集索引保证已经排序完毕。而在实际应用中,我们经常会与遇到的主键-外键关系就是Sort-Merge的一个很好的应用。这种 情况下,一般两列都会有聚集索引(已排序)而且一对多的关系保证了至少有一列没有重复值,这种情况下,Sort-Merge的性能是三种里面最好的。
ii. 另外,如果要求查询的SQL语法本身就要求GROUP BY、ORDER BY、CUBE等运行,则查询语法整体本来就要做排序,因此可以重用排序结果,此时Merge也是不错的选择。
c) Hash Join (哈希联结)
i. 一般来说,查询优化器会首先考虑Nested Loop和Sort- Merge,但如果两个集合量都不小且没有合适的索引时,才会考虑使用Hash Join。
ii. Hash Join也用于许多集合比较操作,inner join、left/right/full outer join、intersect、difference等等,当然了,需要保证都是等值联结。
iii. 另外,Hash Join的变种能够移除重复和进行分组,它只使用一个输入,兼做Build和Probe的角色。
iv. 其实产品级的优化器一般都改进了这些基本算法,而改进过的版本的确有较大的性能提升。在这里只是给需要判断执行计划优劣或者研究查询优化器实现的兄弟提供原理方面的介绍,在实际应用中我们还得结合丰富的statistics作出准确的判断。
4.索引对性能的影响:((详细情况大家可在"佳音快讯"中进行下载学习)
a) 深入浅出理解索引结构
b) 何时使用聚集索引或非聚集索引
c) 结合实际,谈索引使用的误区
d) 索引使用经验总结
通过在这次技术课,我们已经对SQL语句的编写有了大致的了解,希望同学们能够将老师讲解的技术点应用到日常的学习中,从点滴开始培养,比如我们知道"select *"的性能会比列出具体的列名差时,那我们就应该在学习中做到用哪一列的数据就查哪一列.这次技术课也有一期的同学参加,虽然说其中会有一些知识点没有学到过,可以挑自己知道的去听,慢慢熟悉自己不知道,没有学习过的.这堂课具体应用的技术会比较多一点,但是我们参加技术课,更多的是学习老师的思维方式,学习老师考虑问题的方法.希望大家以后能够更加踊跃的参加我们学习部组织的技术大讲堂活动!
向名师学习,做明日名师
-----------------参加德育大讲堂活动总结
20xx年3月17日上午8点,钟村小学校长陈志兵,德育主任毛传香及三位班主任代表,参加了“德育大讲坛”第七讲的学习,掀起了该校向名师学习的又一热潮。
此次讲座以“教育需要智慧的爱”为主题,由中学特级教师,北京市立新学校校长曾军良主讲。课堂上,老师们时而聚精会神地聆听,时而奋笔疾书地记录,时而积极踊跃地交流。课后老师们纷纷表示此次讲座让他们受益匪浅,曾校长深入浅出的讲解为该校老师以后在德育工作中如何用智慧的爱温暖学生提供了好的方法。听课代表也表示将会把自己学习到的经验和同事们分享,共同提升该校德育工作者整体素质,争做明日名师。
图一:曾志军老师
图二 我校教师参加德育大讲堂
图三 德育大讲堂
钟村小学 德育办
毛传香
“知识大讲堂”学习总结xx县运管站自“知识大讲堂活动”开展以来,我站坚持每周参加,由副站长轮流带队,在不影响正常工作的情况下,人数…
员工大讲堂总结汇报各公司高层代表和职工代表紧紧围绕董事长讲话精神进行了精彩的演讲主要谈了对企业的矛盾企业是谁的做好人还是做老好人如…
20xx年上半年道德讲堂”活动总结为了推进公民道德建设,为营造健康向上的人文环境,在市文明办和区文明办的关心重视下,今年上半年开展…
《创业大讲堂》活动总结一、活动名称:《成功---从创业开始》现场讲座二、活动时间:20xx年x月x日上午8点—11点三、活动地点:…
家教大讲堂工作总结六中心理教师:常晴随着社会的发展,家庭教育越来越受到人们的关注。孩子成长过程中出现的各类问题时刻困扰着家长,家长…
家教大讲堂工作总结六中心理教师:常晴随着社会的发展,家庭教育越来越受到人们的关注。孩子成长过程中出现的各类问题时刻困扰着家长,家长…
《创业大讲堂》活动总结一、活动名称:《成功---从创业开始》现场讲座二、活动时间:20xx年x月x日上午8点—11点三、活动地点:…
20xx年,在卫生局的统一安排部署下,新郑市卫生系统卫生健康大讲堂活动进展顺利,在完成年初计划开展大讲堂活动的基础上,结合各种卫生…
20xx年“服务百姓健康行动”全国大型义诊活动健康大讲堂总结根据乐都区卫生和食品药品监督管理局《关于印发20xx年乐都区开展“服务…
周末社区大讲堂总结日前,XXX镇举办了周末社区大讲堂活动共3次,直接受益听众600余人。分别邀请中国人民解放军总医院第一附属(30…
**大学第*附属医院开展第一期“健康大讲堂”的总结11月x日下午,我院在新病房大楼4楼多功能厅举办的第一期“健康大讲堂”圆满结束。…