sql-问题中的这两种SQL哪个效率高?

问题描述

问题中的这两种SQL哪个效率高?
SELECT T3.IDT3.NAMEFROM ZY_UNIT_WARD T1 LEFT JOIN XT_UNIT T2 ON T1.UNITID=T2.IDLEFT JOIN zy_ward T3 ON T2.ID=T3.UNITIDWHERE T2.ID=8SELECT T1.IDT1.NAME FROM zy_ward T1XT_UNIT T2ZY_UNIT_WARD T3WHERE T1.ID=T3.WARDID AND T2.ID=T3.UNITID

解决方案

前者效率高,后者是取笛卡儿积,相当于二重循环,复杂度N^2,前者是hash匹配,复杂度LogN

解决方案二:
晕,这两个是不同的sql,一个是外链一个是内链查询的结果不一样的,不能通用,这就像是说delete和update效率那个高!!

解决方案三:
放在数据库中执行看看就知道了。看看执行计划,找出问题点。

解决方案四:
其实都差不多,第二个SQL的查询方法等于inner join

时间: 2016-04-15
Tags: sql

sql-问题中的这两种SQL哪个效率高?的相关文章

SQL SERVER日志清除的两种方法

server SQL SERVER日志清除的两种方法方法一 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1.设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项--&g

分析MS SQL Server里函数的两种用法

server|函数 SQL Server里函数的两种用法(可以代替游标) 1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分: 以下是引用片段: CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN DECLARE @TASKID INT, @HOUR FLOAT, @PERCENT FLOAT, @RETUR

SQL Server里函数的两种用法(可以代替游标)

server|函数|游标 SQL Server里函数的两种用法(可以代替游标)1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分:CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN   DECLARE @TASKID INT,          @HOUR FLOAT,           @PERCENT

SQL Server里函数的两种用法

SQL Server里函数的两种用法(可以代替游标) 1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分: 以下是引用片段: CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN DECLARE @TASKID INT, @HOUR FLOAT, @PERCENT FLOAT, @RETURN FLOAT IF

sql语句-SQL SERVER中怎么把两次SELECT的结果集放到一个表的不同列?

问题描述 SQL SERVER中怎么把两次SELECT的结果集放到一个表的不同列? SELECT MY_SIGN_IN_TIME,MY_SIGN_OUT_TIME,NAME AS SIGNNAME From SIGN_RECORD INNER JOIN JOBSKYER ON SIGN_RECORD.JOBSKYER_ID=JOBSKYER.JOBSKYER_ID SELECT NAME AS REPLACENAME FROM SIGN_RECORD INNER JOIN JOBSKYER ON

SQL Server中存储过程比直接运行SQL语句慢的原因

原文:SQL Server中存储过程比直接运行SQL语句慢的原因     在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.       经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作.当对数据库进行复杂操作时(如对多个表进行 Upd

javascript中createElement的两种创建方式

  本文实例讲述了javascript中createElement的两种创建方式.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 <html xmlns="http://www.w3.org/1999/xhtml"> &l

Javascript中call的两种用法实例

 这篇文章主要介绍了Javascript中call的两种用法实例,有需要的朋友可以参考一下 用法一(常见用法):   表现形式为:一个对象.方法.call(另一个对象),意义是用另一个对象代替当前对象,执行当前对象的方法.先看示例:  代码如下: function Class1(){     this.name = "class1";     this.showName = function(){         alert(this.name);     } } function C

thinkPHP中钩子的两种配置调用方法详解_php实例

本文实例讲述了thinkPHP中钩子的两种配置调用方法.分享给大家供大家参考,具体如下: thinkphp的钩子行为类是一个比较难以理解的问题,网上有很多写thinkphp钩子类的文章,我也是根据网上的文章来设置thinkphp的钩子行为的,但根据这些网上的文章,我在设置的过程中,尝试了十几次都没有成功,不过,我还是没有放弃,最后还是在一边调节细节,一边试验的过程中实现了钩子行为的设置.下面是我个人的设置经验,在这里跟大家分享一下. 个人做了两种设置,都试验成功了,一个简单点,在thinkphp