sql条件中比较性能优化

第一个比第二个性能高。

查询语句意义:

如果codelist中tablecode配置为0时,

t.Table_Code = ‘SV_RETURN_BILL‘不生效。

如果codelist中tablecode配置为1时
条件t.Table_Code = ‘SV_RETURN_BILL‘生效
SELECT *
  FROM Sm_Affix t
 WHERE t.Record_Id = 865904162
   AND (t.Table_Code = ‘SV_RETURN_BILL‘ OR
       (SELECT COUNT(*)
           FROM Ad_Lov_Code_v t
          WHERE t.List_Code = ‘SM_AFFIX‘
            AND t.Lov_Code = ‘TABLECODE‘
            AND t.Lov_Name = ‘0‘) = 1);

SELECT *
  FROM Sm_Affix t
 WHERE t.Record_Id = 865904162
   AND (t.Table_Code = ‘SV_RETURN_BILL‘ OR
       (SELECT t.Lov_Name
           FROM Ad_Lov_Code_v t
          WHERE t.List_Code = ‘SM_AFFIX‘
            AND t.Lov_Code = ‘TABLECODE‘) = ‘0‘);
时间: 2024-11-20 11:38:34

sql条件中比较性能优化的相关文章

十步优化SQL Server中的数据访问(转载)

原文地址:http://tech.it168.com/a2009/1125/814/000000814758.shtml 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因. 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表

SQL Server中的SQL语句优化与效率

很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: select * from table1 where name='zhangsan' and tID > 10000 和执行: select * from table1 where tID > 10000 and name='zhangsan' 一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那

(转)SQLServer_十步优化SQL Server中的数据访问 三

原文地址:http://tech.it168.com/a2009/1125/814/000000814758_all.shtml 第六步:应用高级索引 实施计算列并在这些列上创建索引 你可能曾经写过从数据库查询一个结果集的应用程序代码,对结果集中每一行进行计算生成最终显示输出的信息.例如,你可能有一个查询从数据库检索订单信息,在应用程序代码中你可能已经通过对产品和销售量执行算术操作计算出了总的订单价格,但为什么你不在数据库中执行这些操作呢? 请看下面这张图,你可以通过指定一个公式将一个数据库表列

(转)SQLServer_十步优化SQL Server中的数据访问 二

原文地址:http://tech.it168.com/a2009/1125/814/000000814758_all.shtml 第五步:识别低效TSQL,采用最佳实践重构和应用TSQL 由于每个程序员的能力和习惯都不一样,他们编写的TSQL可能风格各异,部分代码可能不是最佳实现,对于水平一般的程序员可能首先想到的是编写TSQL实现需求,至于性能问题日后再说,因此在开发和测试时可能发现不了问题. 也有一些人知道最佳实践,但在编写代码时由于种种原因没有采用最佳实践,等到用户发飙的那天才乖乖地重新埋

Microsoft SQL Server中条件字段是Nvarchar类型的,条件有中文的无法查询的原因及处理方法

条件中带的是中文无法查询出,因为字段sender_su_name是nvarchar类型的,需要前面接个N SELECT * FROM [test].[dbo].[Ship_User_Email]  WHERE [sender_su_name]=N'奖励' 为什么要带N如下解释: 使用 Unicode 数据 Unicode 标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案.所有的计算机都用单一的 Unicode 标准 Unicode 数据中的位模式一致地翻译成字符.这保证了同一个位模

Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中

Sql Server 中将由逗号","分割的一个字符串,转换为一个表,并应用与 in 条件 select * from tablenmae where id in(1,2,3) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql语句 string aa="1,2,3"; string sqltxt="select * from tablename where id in ("+aa+")

SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用

原文:SET STATISTICS IO和SET STATISTICS TIME 在SQL Server查询性能优化中的作用 近段时间以来,一直在探究SQL Server查询性能的问题,当然也漫无目的的查找了很多资料,也从网上的大神们的文章中学到了很多,在这里,向各位大神致敬.正是受大神们无私奉献精神的影响,所以小弟也作为回报,分享一下关于SET STATISTICS IO和SET STATISTICS TIME这两条T_SQL命令,在查询优化性能中的作用. 首先我想说明一下这篇文章不是关于如何

在SQL存储过程中给条件变量加上单引号

在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) set @where= '(DATEDIFF(day,'''+CONVERT(varchar(100), @d_start, 23)+''',sdate)>=0 and DATEDIFF(day,'''+CONVERT(varchar(100), @d_end, 23)+''',sdate)<=0) and ' +

SQL Server优化技巧之SQL Server中的&quot;MapReduce&quot;

日常的OLTP环境中,有时会涉及到一些统计方面的SQL语句,这些语句可能消耗巨大,进而影响整体运行环境,这里我为大家介绍如何利用SQL Server中的”类MapReduce”方式,在特定的统计情形中不牺牲响应速度的情形下减少资源消耗. 我们可能经常会利用开窗函数对巨大的数据集进行分组统计排序.比如下面的例子: 脚本环境 /* This script creates two new tables in AdventureWorks: dbo.bigProduct dbo.bigTransacti