SQL各种写法的效率问题
时 间:2008-05-22 08:37:05
作 者:UMVsoft整理 ID:43 城市:江阴
摘 要: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')
_________________________________
上面两种方法,哪种方法效率高?
答:
第1种好一些, 但也得有个量的控制, 因为第1种的union all是作为一个语句整体, 查询优化器会尝试做优化, 同时, 也要先算出这个结果再插入的.
问:
(2)赋值时:
Select @a=N'aa'
SET @a=N'aa'
_________________________________
上面两种方法,哪种方法效率高?
答:
如果是单个赋值, 没有什么好比较的话.
不过, 如果是为多个变量赋值, 经测试, Select 一次性赋值, 比用SET 逐个赋值效率好..
问:
(3)取前几条数据时
set ROWCOUNT 2 select * from tb order by fd
select Top 2 * from tb order by fd
_________________________________
上面两种方法,哪种方法效率高?
答:
SET ROWCOUNT和TOP 是一样的, 包括执行的计划等都是一样的
问:
(4)条件判断时
where 0<(select count(*) from tb where ……)
where exists(select * from tb where ……)
_________________________________
上面两种方法,哪种方法效率高?
答:
这个一般是exists快, 当然, 具体还要看你后面的子查询的条件, 是否会引用外层查询中的对象的列.
exists检查到有值就返回, 而且不返回结果集, count需要统计出所有满足条件的, 再返回一个结果集, 所以一般情况下exists快.
问:
(5)NULLIF的使用----->同理它的反函数ISNULL的使用
update tb set fd=case when fd=1 then null else fd end
update tb set fd=nullif(fd,1)
_________________________________
上面两种方法,哪种方法效率高?
答:
应该是一样的
问:
6)从字符串中取子字符串时
substring('abcdefg',1,3)
left('abcderg',3)_
________________________________
上面两种方法,哪种方法效率高?
答:
基本上是一样的
问:
(7)EXCEPT和Not in的区别?
答:
except会去重复, not in 不会(除非你在select中显式指定)
except用于比较的列是所有列, 除非写子查询限制列, not in 没有这种情况
问:
(8)INTERSECT和UNION的区别?
答:
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access窗体导出PDF】...(04.08)
- 【Access窗体导出PDF】...(04.07)
- Access两种方式实现即时更...(03.01)
- Access隐藏与显示lacc...(01.12)
- 【Access高效办公】将每个...(12.23)
- Access21点游戏源代码(12.13)
- 【Access窗体导出Exce...(11.15)
- 【Access开发】Acces...(11.14)
- 通过Access宏录入数据到选...(11.10)
学习心得
最新文章
- ACCESS精华集锦资料.CHM(04.25)
- Access VBA语句If Me...(04.24)
- 【Access修改记录示例】编辑选...(04.22)
- 【Access表名称命名建议】将A...(04.20)
- Access学习笔记--用Acce...(04.19)
- 【Access重复项查询示例】将A...(04.17)
- Access快速开发平台企业版--...(04.16)
- 【Access模块示例】通过模块代...(04.15)
- Access查询里面分组合计功能添...(04.13)
- 【Access删除查询】删除数字最...(04.12)