zoukankan      html  css  js  c++  java
  • 全连接的几种方式

     
     
    /* 
    CREATE TABLE A(id INT, NAME VARCHAR(30)) 
    CREATE TABLE B(id INT, marks VARCHAR(30)) 
     
    INSERT INTO A 
    SELECT 1,'周杰伦' union 
    SELECT 2,'周星驰' union 
    SELECT 3,'成龙' union 
    SELECT 4,'李连杰' union 
    SELECT 5,'洪金宝' union 
    SELECT 6,'李嘉诚' union 
    SELECT 7,'马甲'  
     
     
    INSERT INTO b 
    SELECT 1,12 union 
    SELECT 3,55 union 
    SELECT 5,56 union 
    SELECT 6,69 union 
    SELECT 11,28 union 
    SELECT 16,47 union 
    SELECT 25,57 
    */  
    /* 
    DBCC FREEPROCCACHE      
    DBCC FREESESSIONCACHE      
    DBCC FREESYSTEMCACHE('All')      
    DBCC DROPCLEANBUFFERS      
    exec sp_configure 'max server memory', 0      
    EXEC ('RECONFIGURE' )     
    */ 
     
    SET STATISTICS IO on 
                    
    EXEC [seequerytime] ' SELECT *   FROM   A  JOIN  B on  1=1
    /* 
    表 'A'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'B'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 

    */ 
     
    EXEC [seequerytime] ' SELECT *   FROM   A INNER JOIN  B on 1=1
    /* 
    表 'A'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'B'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    6*/ 
    EXEC [seequerytime] ' SELECT *   FROM   A left JOIN  B on 1=1
    /* 
    表 'B'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'A'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 

    */ 
    EXEC [seequerytime] 'select * from A  LEFT OUTER JOIN B   on 1=1
    /* 
    表 'B'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'A'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 

    */ 
    EXEC [seequerytime] ' SELECT *   FROM   A FULL JOIN  B on 1=1
    /* 
    表 'A'。扫描计数 2,逻辑读取 8 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'B'。扫描计数 2,逻辑读取 8 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    10 
    */ 
    EXEC [seequerytime] ' select * from A CROSS APPLY B' 
    /* 
    表 'A'。扫描计数 1,逻辑读取 7次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'B'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 

    */ 
    EXEC [seequerytime] ' select * from A outer APPLY B' 
    /* 
    表 'A'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'B'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 

    */ 
    EXEC [seequerytime] ' select * from A cross JOIN B' 
    /* 
    表 'A'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'B'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    10 
    */ 
     
    EXEC [seequerytime] ' select * from A, B ' 
    /* 
    表 'B'。扫描计数 1,逻辑读取 7 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    表 'A'。扫描计数 1,逻辑读取 1 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 
    6。 
    */ 
     
    /* 
    DROP TABLE A 
    DROP TABLE B 
    */ 
     
     
     
     
    /* 
    alter proc [dbo].[seequerytime] @sql varchar(max)       
    as        
    set nocount on       
    declare @d datetime       
    set @d = getdate()       
    /*你的SQL脚本开始*/       
    exec (@sql)       
    /*你的SQL脚本结束*/       
    declare @result int       
    select  @result = datediff(ms, @d, getdate())        
    select  @result        
    print @result       
     
     
     
     
    */ 

    看见full join的 逻辑读取比其他方式多

  • 相关阅读:
    微软企业库4.1学习笔记(十一)企业库的核心类 Virus
    微软企业库4.1学习笔记(七)创建对象 续集1 Virus
    微软企业库4.1学习笔记(五)对象创建和依赖注入方法 Virus
    微软企业库4.1学习笔记(十六)缓存模块4 服务器场中的缓存使用 Virus
    Android知识汇总
    移动UI研究学习汇总
    iOS独立存储Demo(调试过可以运行)
    The Official Preppy Handbook 目录
    一个好的App架构应该包括什么?
    转身再不仅仅只是开发人员
  • 原文地址:https://www.cnblogs.com/qanholas/p/1865016.html
Copyright © 2011-2022 走看看