当前位置: 网学 > 编程文档 > SQL SERVER > 正文

浅析DM数据库in\exists子查询

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式
 执行计划:

以下是引用片段:
  #RSET:[0, 0, 0];
  #XFLT:[0, 0, 0]; IsGreatZero(Expr3)
  #XNLP:[0, 0, 0]; CROSS_JOIN
  #CSEK:[0, 0, 0]; INDEX33555528(t1), FULL_SCAN
  #XRCS:[0, 0, 0];
  #XFLT:[0, 0, 0]; EXPR2 < EXPR0
  #CSEK:[21, 1, 1]; INDEX33555522(T2), FULL_SCAN

  从执行计划看出,首先扫描t1表,然后从t1表取出一条记录,与t2表进行嵌套连接,条件是d1录进行查询,直到t1表搜索完全。使用XNLP的约束是如果两表的列进行连接,则不可以是等值连接。类似下面语句均可以用到XNLP连接

以下是引用片段:
  select * from t1 where exists ( select * from t2 where d2
  select * from t1 where exists ( select * from t2)
  select * from t1 where exists ( select 1)

  (2) HNLP

  HNLP操作符的含义是哈希半连接,产生的条件是:两表进行等值连接,并且子查询中的表使用的是未建索引的列。

  例如:

以下是引用片段:
  create table t1(c1 int,c2 int);
  create table t2(d1 int,d2 int);
  create index it1c1 on t1(c1);
  create index it2d1 on t2(d1);
  select * from t1 where exists(select * from t2 where d2=c1);

  执行计划:

以下是引用片段:
  #RSET:[0, 0, 0];
  #HNLP:[0, 0, 0];
  #CSEK:[0, 0, 0]; INDEX33556678(t1), FULL_SCAN
  #CSEK:[21, 1, 1]; INDEX33556647(t2), FULL_SCAN

  分析:从执行计划看出,尽管t2表中建有索引,但是未使用d1列进行连接。执行过程是全表扫描t1表,以c1列为键值,使用哈希函数,将t1表的数据装入散列桶,对于t2表每条数据d2采用相同的散列函数计算出相应的散列值,进行查找,如果命中,则返回该记录,否则取t1表下一条记录重复操作,直到t1表扫描完毕。

  (3) SNLP

  SNLP操作符为索引半连接,产生条件是子查询的表中建有索引。

  例如:

以下是引用片段:
  create table t1(c1 int,c2 int);
  create table t2(d1 int,d2 int);
  create index it2d1 on t2(d1);
  select * from t1 where c1 in (select d1 from t2);

  执行计划:

以下是引用片段:
  #RSET:[20, 1, 0];
  #SNLP:[20, 1, 0];
  #CSEK:[20, 1, 0]; INDEX33556696(t1), FULL_SCAN
  #CSEK(SECOND):[0, 0, 0]; it2d1(t2), INDEX_EQU_SEARCH

  分析:从执行计划看出,t2表建有索引,对t2表采用索引等值查询,执行过程为t1表过来一条记录,以c1列值为key,在t2表中使用索引扫描,如果找到一条记录就返回t1表当前行到结果集,然后取t1表下一条记录,重复上述查询过程,直到t1表搜索完毕。

  (4) SMRG

  SMRG操作符是m

  • 下一篇资讯: 需要DBA深思的面试问题
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号