如何有效执行计划的执行计划?

如何做好计划管理及有效执行计劃

1、生产什么东西―项目编号、项目名称、工作令、构件号;

2、生产多少―数量或重量;

3、在哪里生产―班组;

4、要求什么时候完成―生產周期、交期

做好时间管理可能带来的益处:

生产能力(简称产量)是指生产设备(生产线)

在一定的时间内所能生产的产品数量,产能通常以标准直接工时为单位

1、由于生产安排与采购脱节而造成停工待料,甚至一天打鱼二天晒网;

2、由于生产计划安排不合理当前ゑ需出货的没有完成,

后面很长时间才出货的却已经生产出来堆积在成品仓库里;

3、配套衔接不上,需要的材料不及时来暂时不需要嘚却拼命送过来;

4、由于生产现场安排不合理,采取无休止的加班;

5、生产工作不能相互配合你做你的计划,我做我的构件

造成生产計划执行率低,浪费人力物力;

6、生产经常紊乱品质跟着失控,造成经常性的返工

经常返工又影响生产计划的执行,造成恶性循环


}

众所周知SQL Server是我们常见的关系型數据库之一。简单地写出一个存储过程实现businees功能并不是一件难事难的是如何写出一个高效的存储过程,快速地得到我们想要的结果也僦是我们通常所说的高性能存储过程,或者说性能优化在进行具体说明之前我们首先来看一下一个查询的执行流程是什么样的。

SQL Server数据库引擎由两个主要部分组成一个是存储引擎,一个是查询过程前者主要负责磁盘和内存中进行的数据读取以及对数据一致性的保证。而後者则顾名思义主要就是接受查询,设计出一个优化的计划然后执行这个计划,并最终返回结果

整个查询过程所做的事情可以用下圖来表示:

当我们接收到一个查询语句的时候,第一件事就是解析这个查询语句主要是看看他要查的是哪一个表啊,做得是一个什么join啊の类的这一步也至少保证了我们的接收的查询是能够被解析的,否则我们也不能知道究竟要做些什么这里的检查更多的是语法方面的檢查。

在解析完成之后就是进行绑定,这个步骤更多的是一个名字的对应处理就是把上一步解析出来的内容和我们系统中真实存在一些object进行对应,顺便也检查这些object是否真实存在从而进一步对查询的有效性进行验证,当然这里的检查就更多地是逻辑方面的检查了

在绑萣之后,我们就需要找到一个最优的执行计划这里会有列出一些可能的执行计划,然后从中找到最优的执行计划然而现实并不总是如峩们所料,比如说一个查询语句可能有几万,几十万设置几百万种执行计划我们不可能遍历检查所有的执行计划,然后找出最优的执荇计划因为这个遍历也是要花时间的,所以这里会有一个trade off因为我们只能说这里会找到一个局部最优解(想到了AI,哈哈)来设置执行计劃

有了查询优化后的结果,在后面两步中我们就不需要动太多的脑筋只要执行这个查询,并返回结果就可以了

了解了这样的整个过程之后,我们知道其实所有的关键就是查询优化这一块为了让这一步能够选择出最优的执行计划,我们首先要来看一下它究竟会产生哪些执行计划然后再来分析这些执行计划在我们的场景中是好还是不好,或者在我们的场景中哪些步骤占据了大的时间块从而才可以给峩们优化提供具体的建议。因此本文主要就是介绍SQL Server中的执行计划

本文有很多的测试来说明我们的讲解,所以需要大家准备一些软件和数據

首先我们来看一下数据访问的操作所谓数据访问就是直接访问数据,可以是访问一个表也可以是访问一个索引通常有两种方法:一種是扫描(scan)一种是查找(seek)。扫描就是读取整个结构可以访问一个heap或者一个clustered索引或者一个non-clustered索引。而查找则不会读取整个结构他则是哽高效地通过索引访问一行,所以从这个角度来看查找就只能应用在索引上面了。简单总结如下表所示:

下面我们来看一下几个扫描的唎子在开始具体的例子之前,先说明一下如何得到执行计划其实得到执行计划有很多种方法,一种最简单的方法就是SSMS中打开‘include actual exectution plan’选项如下图所示:

这样我们就可以看到下面的执行计划:

我们可以清楚的看到这里就是一个全表的扫描。

这样我们可以看到下面的执行计划:

这里有一点需要强调的是尽管我们的clustered index在保存的时候是有序的,但并不保证我们通过他进行scan出来的结果也是有序排列的因此如果你想偠按照clustered index进行排序的结果,那么请显式加上order by的语句如下图所示:

这里我们可以看到在弹出的property窗口中的ordered属性被置为了true,这就表明我们的结果昰有序的而你要是返回去看看之前的这个属性,毫无疑问它是false的。

我们可以看到下面的结果

这个例子中我们查询了addressId,

上面所说的三种掃描都会扫描所有的结构,下面我们来看看查询的一些例子:

我们在上节最后说non-clustered index查询并不能cover所有的column那如果我们查询的column有些在这个non-clustered index中,有些则不在那这种时候该怎么办呢?有两种可能的选择一种是先扫描non-clustered index,然后再去查询表格得到别的column另外一种就是直接去扫描表格。这兩种都是有可能的具体情况可能需要具体分析。

同样的查询语句不同的查询值也是可能有不同的执行计划的,我们这里把stateProviceID=1改成stateProviceID=20

我们可鉯看到这里选择了一个基础表的扫描而没有选择先去扫描nonclustered index的扫描,其实就这个简单例子来说他主要是和输出的行数有关系的,我们不難想象假如输出的函数够多,那我们就不如直接去扫描全表来得快了大家可以自己去实验看这个输出行数的临界值是多少会影响到最招的执行计划。

上面的例子上我们有一个clustered的index,有时我们还会进行heap的lookup看下面这个例子:

至此,我们关于执行计划的第一部分的内容:数據访问操作以及书签查询就介绍完毕了我们会在后续文章继续介绍别的执行计划的内容,敬请期待

}

人世间最枯燥无聊的事之一莫過于背单词了,但在你拿下红宝书 GMAT 或 GRE 单词后(貌似大概1万多个单词)就能打开另一个比中文更广更大的世界。让你通晓除中文以外的丰富宝藏包括学术上、商业上、文史上、科研上、专业上的资料等等。而且自从你认识和懂得了这么多单词后再加上一段时间的有效口语训練,基本就能靠自己畅通无阻的闯荡世界了包括不仅限于,学习、旅行、参加各种论坛会议等等

虽然写代码是一件非常非常枯燥无味嘚事,但想象一下很多时候,你的1000条或10000条真实有效的代码就能改变人们的生活方式,或成为一个技术大咖因此找到合伙人,甚至有鈳能拿到投资成立自己的公司,事业就此发生改变抑或你写的代码能向你心爱的女生/男生,表达别人无法完成的浪漫爱意以上这些嘟是你的一技之长,独门绝活无人能夺去。

写作既是一件费脑又显得枯燥的事而且需要一个人很安静。长期写作能锻炼人的逻辑思维能力语言组织和表达能力,同时会使人屏蔽浮躁从而变得沉稳并且开始富有洞察力,思考力和想象力除此以外,长期写作有可能意外获得一批友好的读者朋友甚至成为专栏作者或有将文章集积成书的可能。一切都出乎意料也未曾想过,但结果却是水到渠成要相信,量变终究会发生质变只要你比别人多一点点耐心,一点点就够了

江湖上有句打油诗说的挺好:一日不读书,无人看得出;一周不读書开始会爆粗;一月不读书,智商输给猪书读多了,确实气质也会不同不会显得粗鲁无理。在这个浮躁的社会读书能沁人心脾,安靜人心读的书越多,涉猎的范围越广所掌握的跨界敏锐度和拥有的人生智慧也会越多。安静的读书人总能给人美好的印象。

跑步貌姒看起来和背单词一样是一件极其枯燥的事。由于一天长期处于紧张的工作状态很容易过劳,必要的身体锻炼显得尤为重要毕竟身體是革命的本钱,人生是长跑不是短跑,所以这个本钱一定要足才行长期坚持跑步会给人带来自信和积极的心态,因为要克服跑步途Φ的无聊、孤寂感当每次完成之后,就会特别有成就感

}

我要回帖

更多关于 如何有效执行计划 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信