工作中,遇到同事之前写的oracle语句中有一个union
all,并且很多地方都用到了。便在网上查了一下用法,以下是自己的理解。

sql server 统计出来的内存,不管是这个,还是dbcc
memorystatus,和进程管理器中内存差距很大,差不多有70G的差异。

创建数据库,并创建一张表mytb进行测试

union  (联合)将两个或者多个结果集合并。

具体原因不止,可能是内存泄漏,目前只能通过重启服务解决

图片 1

在使用时,两个结果集要有相同的列,并且字段类型需要一致。

图片 2

图片 3

select id,name from tableA
union all
select name from tableB

 图片 4

**************************************************************************************************************************************************************************************

消息 205,级别 16,状态 1,第 1 行
使用 UNION、INTERSECT 或 EXCEPT
运算符合并的所有查询必须在其目标列表中有相同数目的表达式。

图片 5

附建表语句:

union 和union all 的区别;

图片 6

图片 7

union会去除结果集中重复的部分,相当于进行一个distinct(去重),并且union
会自带排序功能;

Process/System Counts                    Value

备注:我使用的mysql版本是5.6

union all
会不管是否重复,都会将结果合并在一起输出,没有排序功能,只是结果集的堆叠输出。


 

tableA

Available Physical Memory                5337628672

id  name  score

Available Virtual Memory                 8723028054016

1   a    80

Available Paging File                    9299374080

2     b    79

Working Set                              26316115968

3     c      68

Percent of Committed Memory in WS        100

tableB

Page Faults                              12218866

id  name  score

System physical memory high              1

1     d    48

System physical memory low               0

2   e    23

Process physical memory low              0

3   c    86

Process virtual memory low               0

使用union

 

1、                    结果如下:name

(10 rows affected)

select name from tableA                a

 

union                         b

Memory Manager                           KB

select name from tableB                c


                             d

VM Reserved                              70668820

                           e

VM Committed                             25599992

 

Locked Pages Allocated                   0

我们运行

Large Pages Allocated                    0

select id,name from tableA

Emergency Memory                         1024

union

Emergency Memory In Use                  16

select id,name from tableB

Target Committed                         25600000

结果如下:

Current Committed                        25599992

id name

Pages Allocated                          24728712

1 a
1 d
2 b
2 e
3 c

Pages Reserved                           0

两个表中都有 3 c ,使用union时只输出一次。

Pages Free                               35552

并且我们会发现,union会按照第一列进行默认排序。

Pages In Use                             4883440

使用union all

Page Alloc Potential                     19436560

1、

NUMA Growth Phase                        2

select name from tableA
union all
select name from tableB

Last OOM Factor                          0

结果:

Last OS Error                            0

name

 

a
b
c
d
e
c

(16 rows affected)

2、

 

select id,name from tableA
union all
select id,name from tableB

Memory node Id = 0                       KB

结果如下:


id name

VM Reserved                              70668756

1 a
2 b
3 c
1 d
2 e
3 c

VM Committed                             25599972

从结果看到,两个union all 结果差别只是在于是否输出id 其输出顺序,为
tableA所有记录紧接tableB所有记录,因此说union all非排序输出。

Locked Pages Allocated                   0

上边的用法应该在很多地方都可以查到吧。

Pages Allocated                          24728712

下面说一下我遇到的问题。

Pages Free                               35552

在业务中需要查询两列,两个不同的列从两个表中获取。

Target Committed                         25599976

select
t.d day_id,
sum(t.OWN_COST) own_cost,
sum(t.cishu) cishu
from 
(
    select 
    to_char(f.riqi,'yyyy-mm-dd')d ,
    sum(nvl(f.feiyong1, 0))
    + sum(nvl(f.feiyong2, 0)) OWN_COST,--金额
    0  cishu
    from tablea t ,tableb f
    where 
    t.liushuihao=f.liushuihao 

    group by to_char(f.ji_fei_rq ,'yyyy-mm-dd')

    union all

    SELECT 
    to_char(jiaoyiriqi  ,'yyyy-mm-dd') d,
    0 OWN_COST,
    COUNT(case
    when JIAO_YI_LX = 1 then --【交易类型,1正交易,2反交易】
    1
    end) - COUNT(case
    when JIAO_YI_LX = 2 then --【交易类型,1正交易,2反交易】
    1
    end) cishu  
    FROM tablea 

    group by to_char(jiaoyiriqi,'yyyy-mm-dd')
 )t
 group by t.d

Current Committed                        25599976

以上代码看到两个子查询中都有次数和金额。当子查询计算金额的时候,设置默认的此时为0
   (0 次数);当计算次数的时候,设置金额为0 (0 own_cost)。

Foreign Committed                        0

这样写的好处:

Away Committed                           0

 1、当次数有问题时,我们只需要查看计算次数的子查询部分,同理,金额错误时我们只需要查看相关代码就可以。

Taken Away Committed                     0

   2、在子查询中,设置不进行计算的值为0,对于运算结果并不会产生影响。

 

 

(10 rows affected)

以上是本人对union的浅显理解,欢迎各位大神指导。

 

 

Memory node Id = 64                      KB


VM Reserved                              0

VM Committed                             20

Locked Pages Allocated                   0

 

(3 rows affected)

 

MEMORYCLERK_SQLGENERAL (node 0)          KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          27480

 

(6 rows affected)

 

MEMORYCLERK_SQLBUFFERPOOL (node 0)       KB


VM Reserved                              12954432

VM Committed                             655624

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          20682112

 

(6 rows affected)

 

MEMORYCLERK_SQLQUERYEXEC (node 0)        KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          4448

 

(6 rows affected)

 

MEMORYCLERK_SQLOPTIMIZER (node 0)        KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          1368

 

(6 rows affected)

 

MEMORYCLERK_SQLUTILITIES (node 0)        KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          176

 

(6 rows affected)

 

MEMORYCLERK_SQLSTORENG (node 0)          KB


VM Reserved                              10048

VM Committed                             10048

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          17200

 

(6 rows affected)

 

MEMORYCLERK_SQLCONNECTIONPOOL (node 0)   KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          2608

 

(6 rows affected)

 

MEMORYCLERK_SQLCLR (node 0)              KB


VM Reserved                              6302848

VM Committed                             17884

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          12384

 

(6 rows affected)

 

MEMORYCLERK_SQLSERVICEBROKER (node 0)    KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          656

 

(6 rows affected)

 

MEMORYCLERK_SQLHTTP (node 0)             KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          8

 

(6 rows affected)

 

MEMORYCLERK_SNI (node 0)                 KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          144

 

(6 rows affected)

 

MEMORYCLERK_SNI (node 64)                KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          16

 

(6 rows affected)

 

MEMORYCLERK_SNI (Total)                  KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          160

 

(6 rows affected)

 

MEMORYCLERK_FULLTEXT (node 0)            KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          296

 

(6 rows affected)

 

MEMORYCLERK_SQLXP (node 0)               KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          16

 

(6 rows affected)

 

MEMORYCLERK_BHF (node 0)                 KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          208

 

(6 rows affected)

 

MEMORYCLERK_XE_BUFFER (node 0)           KB


VM Reserved                              4608

VM Committed                             4608

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          0

 

(6 rows affected)

 

MEMORYCLERK_XTP (node 0)                 KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          16

 

(6 rows affected)

 

MEMORYCLERK_HOST (node 0)                KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          472

 

(6 rows affected)

 

MEMORYCLERK_SOSNODE (node 0)             KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          55328

 

(6 rows affected)

 

MEMORYCLERK_SOSNODE (node 64)            KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          2432

 

(6 rows affected)

 

MEMORYCLERK_SOSNODE (Total)              KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          57760

 

(6 rows affected)

 

MEMORYCLERK_SOSOS (node 0)               KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          192

 

(6 rows affected)

 

MEMORYCLERK_SOSMEMMANAGER (node 0)       KB


VM Reserved                              79224

VM Committed                             79080

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          0

 

(6 rows affected)

 

MEMORYCLERK_FULLTEXT_SHMEM (node 0)      KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              96

SM Committed                             96

Pages Allocated                          0

 

(6 rows affected)

 

MEMORYCLERK_SQLSERVICEBROKERTRANSPORT (node 0) KB


VM Reserved                                    0

VM Committed                                   0

Locked Pages Allocated                         0

SM Reserved                                    0

SM Committed                                   0

Pages Allocated                                192

 

(6 rows affected)

 

MEMORYCLERK_FILETABLE (node 0)           KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          16

 

(6 rows affected)

 

MEMORYCLERK_XE (node 0)                  KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          3880

 

(6 rows affected)

 

MEMORYCLERK_SQLLOGPOOL (node 0)          KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          15224

 

(6 rows affected)

 

MEMORYCLERK_LWC (node 0)                 KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          32

 

(6 rows affected)

 

MEMORYCLERK_FSCHUNKER (node 0)           KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          48

 

(6 rows affected)

 

CACHESTORE_OBJCP (node 0)                KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          203560

 

(6 rows affected)

 

CACHESTORE_SQLCP (node 0)                KB


VM Reserved                              0

VM Committed                             0

Locked Pages Allocated                   0

SM Reserved                              0

SM Committed                             0

Pages Allocated                          3322304

发表评论

电子邮件地址不会被公开。 必填项已用*标注