经常可以遇到这种情况:用不同的SQL写法可以达到同样的目的。爱钻牛角尖的人就想搞明白,诚然结果一样,但到底孰优孰劣?下面是我列出的一些,请兄弟们赐教。也请兄弟们将你们遇到的类似问题一并列出。
(1)一次插入多条数据时:
CREATE TABLE tb(ID int, 名称
NVARCHAR(30), 备注 NVARCHAR(1000))
INSERT tb SELECT
1,'DDD',1
UNION ALL SELECT 1,'5100','D'
UNION ALL SELECT 1,'5200','E'
也可以这样:
CREATE TABLE tb1(ID int, 名称 NVARCHAR(30), 备注 NVARCHAR(1000))
INSERT TB1 (ID,名称,备注)VALUES(1,'DDD',1)
INSERT TB1
(ID,名称,备注)VALUES(1,'5100','D')
INSERT TB1
(ID,名称,备注)VALUES(1,'5200','E')
_________________________________
上面两种方法,哪种方法效率高?
根据我的认识,第二种方式效率会高些。因为union运算本身会做一个向中间表插入的操作。所以每一种方式执行步骤为:
执行完多个union操作,再执行多条数据插入操作
第二的方式只执行了多条数据插入操作,所以效率较高
(2)赋值时:
SELECT @a=N'aa'
SET @a=N'aa'
_________________________________
上面两种方法,哪种方法效率高?
感觉一样,只不过select可以多个变量同时赋值
(3)取前几条数据时
set
ROWCOUNT 2 select * from tb order by fd
select Top 2
* from tb order by fd
_________________________________
上面两种方法,哪种方法效率高?
我的看法是第二种效率较高,意思比较明确。记得好像是官方推荐的用法。
我对第一种方式的理解是:先写语句告诉引擎以后的语句我只要两条结果。之后又执行了select语句。微软有没有对这种情况做优化我不得而知。但select top
2 微软肯定做了优化,所以一点可以肯定第二种方工的效率肯定不会比第一句低
(4)条件判断时
where 0<(select count(*) from tb where ……)
where
exists(select * from tb where ……)
_________________________________
上面两种方法,哪种方法效率高?
第二种会好些。exists一旦获取一条符合条件的结果便返回结果true,只有结果为false的时候才会扫描整个表。而第一种则无论表中记录状况如何都需对整个表进行扫描。
(5)NULLIF的使用----->同理它的反函数ISNULL的使用
update tb set
fd=case when fd=1 then null else fd end
update tb
set fd=nullif(fd,1)
_________________________________
上面两种方法,哪种方法效率高?
语句好像书解有误??
如果语句是这样的话:
update
tb set fd=case when fd is null then 1 else fd end
update tb set fd=isnull(fd,1)
感觉效率差不多,有机会测试下
(6)从字符串中取子字符串时
substring('abcdefg',1,3)
left('abcderg',3)_
________________________________
上面两种方法,哪种方法效率高?
left更专业些有优势吧
(7)EXCEPT和Not in的区别?
except没用过,感觉应该一样,都需要做逐行扫描,性能都比较低~~
(8)INTERSECT和UNION的区别?
intersect没用过没有发言权
以上这些答案完全凭经验,没有经过测试,如有错误欢迎指出....
分享到:
相关推荐
在数据库管理中,SQL语句的执行效率是关键因素之一,尤其对于大数据量的应用来说,优化SQL性能至关重要。本文将详细探讨几个关于优化SQL语句执行效率的重要注意事项,旨在帮助数据库管理员和开发者提升系统性能。 ...
"绝对惊世骇俗的SQL写法"这一标题揭示了我们即将探讨的是一些非同寻常的MySQL查询技巧,这些技巧可能挑战了常规的编程思维,能为程序员带来全新的理解和操作体验。描述中的“耗费了本人大量心血”暗示了作者在深入...
总的来说,熟练掌握在SQL中抛出异常的方法,能显著提升开发质量和效率,尤其是在处理报表这类复杂逻辑时。通过合理使用`RAISERROR`和`THROW`,以及配合`TRY...CATCH`,我们可以更好地控制错误处理,确保程序的稳定性...
在MySQL中,处理时间数据是数据库操作中的常见任务。这篇内容主要探讨了如何使用SQL语句获取一天、一周、一月内的数据。首先,我们创建了一个名为`t`...理解并熟练运用这些函数和操作,将极大地提升数据库管理的效率。
使用`SqlParameter`进行参数化查询是.NET开发中的一个重要概念,它有助于确保数据安全性和提高执行效率。在实际应用中,建议尽可能使用参数化查询代替拼接SQL字符串的方式,尤其是在处理用户输入的情况下。此外,...
### SQL写法——数据修改:条件 INSERT ALL 与 INSERT FIRST 在数据库操作中,SQL(Structured Query Language)作为处理关系型数据库的标准语言,其功能强大且应用广泛。本文将详细介绍如何利用Oracle数据库中的...
本资源集合了泛微系统中与SQL Server数据库交互时常用的各种SQL语句,涵盖了组织架构、流程管理以及自定义需求等多个方面。以下是对这些SQL语句知识点的详细解释: 1. **组织架构相关SQL**: - 组织架构是企业信息...
使用绑定变量是提高SQL语句执行效率的关键技术之一。 绑定变量的概念和重要性: 绑定变量是SQL语句中用于代替硬编码的字面值的占位符。它们在SQL语句第一次执行时被赋值,然后存储在数据库的共享池中,供后续相同的...
- 编写测试用例,确保SQL脚本在各种预期和非预期情况下都能正确工作。 - 使用单元测试框架进行自动化测试。 10. **文档**: - 为每个脚本提供详细的使用和部署指南。 - 记录脚本的变更历史,包括更改的原因和...
本文将介绍10个高级SQL写法,这些技巧主要源自MySQL 8.0环境,适用于处理各种业务需求。 1. **ORDER BY FIELD() 自定义排序** 在MySQL中,除了常见的`ASC`和`DESC`用于排序外,`ORDER BY FIELD()`函数允许我们...
在Java的持久化框架Hibernate中,Criteria API是一种用于构建动态查询的强大工具,它允许开发者以对象化的方式构建SQL语句,而无需直接编写SQL代码。本篇将详细讲解如何在Hibernate中利用Criteria查询来实现类似SQL...
3. Syntactical SQLOptimizer(语法SQL优化器):该功能可以自动改写SQL语句,以寻找语义相同但执行效率更高的SQL写法。通过分析每一种可能的执行计划,并列举出对应的SQL语句,它能够极大地提高寻找最佳化SQL语句的...
### 如何提高SQL查询效率 ...提高SQL查询效率是一项综合性的技术工作,需要从多个角度出发,结合实际情况灵活运用各种技巧。通过上述方法的应用,可以有效提升查询性能,进而提高整个系统的运行效率。
### 多行SQL导入ACCESS事务的代码写法 #### 知识点概述 本文档将详细介绍如何使用ADO(ActiveX Data Objects)技术结合事务处理功能,实现多行数据的高效导入到Microsoft Access数据库中的方法。在开发过程中,...
"sql 书写规范" SQL 书写规范是为了确保 SQL 代码的可读性、可维护性和性能,以下是 SQL 书写规范的详细说明: ...遵守这些规范可以确保 SQL 代码的可读性、可维护性和性能,从而提高数据库的效率和稳定性。
今天根据经验总结一些高级查询(SQL)及SQL效率优化,有时同样能达到查询效果,但也许系统所耗费的资源可能有很大差异,由于SQL书写的影响,同一功能同一性能不同写法SQL的影响。下面是sql语句优化的一些提示要点,...
**SQL写法基础** 1. **创建表结构**:在Sybase IQ中,创建表时需要指定列的数据类型、长度和是否允许为空。例如: ```sql CREATE TABLE Sales ( ProductID INT NOT NULL, SaleDate DATE, Quantity SOLDouble, ...
但是,实际开发中,某些SQL语句的写法会导致用不到并行,从而影响到SQL的执行效率 所以,本文要表达的是:我们要利用好并行,不要让一些SQL的写法问题“抑制”了并行,让我们享受不了并行带来的快感 关于SQL ...
对于开发人员而言,SQLTracker也能辅助进行代码调试,通过跟踪SQL执行,可以快速定位代码中的问题,提高开发效率。 9. **优化建议** 高级的SQLTracker可能还会提供一些自动化的优化建议,如提示改进索引策略,...
2. 数据比对:除了结构,这些工具还可以对比数据库中的实际数据,找出记录差异,帮助定位潜在的问题。 3. 同步操作:一旦发现差异,工具通常提供一键同步功能,允许用户将更改从一个数据库应用到另一个数据库,支持...