两表组织结构表(组织)和工资历史记录表(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我想很多人不认为。