zoukankan      html  css  js  c++  java
  • Intersect, Except, Union, All and Any(1)

    --注:本文为意译,对原文进行了一些改变

    在我浏览SQL Server 2008的培训课程时,发现了一些我在平日不太使用的SQL谓词:

    • Intersect
    • Except
    • ALL
    • ANY

    我们将在AdventureWorks示例库上,试用这些谓词。

    首先我们来看INTERSECT,EXCEPT,UNION

    在实验中,我们将使用CustomerID的以下2个集合

    • 在sales territory 10(United Kingdom)中的客户
    • 在‘2004-07-01’后生成的订单

    可能解释这三个谓词的最好方法是通过示意图,最上方的图表示在英国(UK)但未在2004-07-01后产生订单的客户,中间的图表示在英国且在2004-07-01后产生订单的客户,最下方的图标是在英国或在2004-07-01后产生订单的客户。

    下面我们会来看看用不同的方式来实现EXCEPT逻辑

    1.使用left join
    select   
        C.CustomerID   
    from   
        Sales.Customer as C   
        left join   
        Sales.SalesOrderHeader as OH   
        on   
            C.CustomerID = OH.CustomerID   
            and   
            OrderDate >= '2004-07-01'  
    where   
        OH.CustomerID is null  
        and   
        C.TerritoryID = 10; 

    生成的执行计划如下:

     

    Subtree Cost: 0.615925

    2. 使用NOT IN

    select   
        CustomerID   
    from   
        Sales.Customer   
    where   
        TerritoryID=10   
        and   
        CustomerID    
            not in  
            (   
                select customerid   
                from  Sales.SalesOrderHeader   
                where OrderDate>='2004-07-01'    
            )  

    生成的执行计划如下:

     

    Subtree Cost: 0.614287

    3. 使用EXCEPT谓词

    select   
        CustomerID   
    from   
        Sales.Customer   
    where   
        TerritoryID = 10   
    EXCEPT   
    select   
        customerid   
    from   
        Sales.SalesOrderHeader   
    where   
        OrderDate >= '2004-07-01'  

    生成的执行计划如下:

     

    Subtree Cost: 0.614287

    使用EXCEPT谓词和使用NOT IN的子树成本相同,且执行计划也相同。

  • 相关阅读:
    Android 亮度调节
    Android异步回调中的UI同步性问题
    Java总结篇系列:Java 反射
    Node入门教程(4)第三章:第一个 Nodejs 程序
    Node入门教程(3)第二章: Node 安装
    Node入门教程(2)第一章:NodeJS 概述
    Node入门教程(1)目录
    前端面试题:JS中的let和var的区别
    IT学习逆袭的新模式,全栈实习生,不8000就业不还实习费
    11-移动端开发教程-zepto.js入门教程
  • 原文地址:https://www.cnblogs.com/DBFocus/p/1739589.html
Copyright © 2011-2022 走看看