SQLServer不声明使得进程崩溃

SQLServer不声明使得进程崩溃
两表组织结构表(组织)和工资历史记录表(wagepermonthhis)
两表与organise.item_id和wagepermonthhis.orgids相关
该组织表(以下简称O表)大约有6000记录的11字段,和wagepermonthhis(以下简称W表)包含125万条记录和25场。

原始程序中的以下语句
它是一个查询所有不在W表到2的组织层次结构的记录。
复制代码代码如下所示:
选择orgid公司代码公司名称,社
从组织
在orglev = 2
和item_id不
(从WagesPerMonthHis选择orgids
在wagesyear '2010'and wagesmonth = =
01'group通过orgids,orgnames)
为了orgid

这句话的执行需要33秒,和服务器的配置是比较高的:16核心4cpu,24g内存,而内存和CPU不是瓶颈,执行时,他们开始认为这是(选择orgids从wagespermonthhis)。
在wagesyear '2010'and wagesmonth = =
01'group通过orgids,orgnames)这个说法是由一个单独的实施缓慢的执行,但是发现执行速度非常快,不到2秒,所以它的症结不在完整扫描关键词带来的性能下降。是造成页面响应最直接的原因,一键不使用功能

尝试不存在的语句,并发现效果是相同的,它并没有像互联网上说的那样提高很多性能。

因此,重新优化语句如下所示
复制代码代码如下所示:
选择a.orgid公司代码,a.orgname作为公司名称,a.item_id
从组织
左外连接(选择不同的b.orgids WagesPerMonthHis B
在wagesyear = '2010'and wagesmonth = 01)为B
在a.item_id = b.orgids
在a.orglev = 2
和b.orgids是空的
按公司代码订购

使用左外连接后(事实上,左连接也可),整个句子在400ms的执行速度,33秒和400ms我想很多人不认为。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部