加入收藏 - 网站地图 - 网站搜索 -
阅读新闻

SQL各种写法的效率

[日期:12-25] [字体: ]

(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')
_________________________________
上面两种方法,哪种方法效率高?

**对于插入常量,没考虑过效率,应该第一个好点吧

(2)赋值时:
SELECT @a=N'aa'
SET @a=N'aa'
_________________________________
上面两种方法,哪种方法效率高?

**一样,不过前一个适用性大些,7.0以下也可以用


(3)取前几条数据时
set ROWCOUNT 2 select * from tb order by fd
select Top 2 * from tb order by fd
_________________________________
上面两种方法,哪种方法效率高?

**效率一样,不过前一个适用性大些,7.0以下也可以用


(4)条件判断时
 where 0<(select count(*) from tb where ……)
 where exists(select * from tb where ……)
_________________________________
上面两种方法,哪种方法效率高?

**第二个效率高,这个没有争议


(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)_
________________________________
上面两种方法,哪种方法效率高?

**基本一样,left稍低,因为left要转化成substring执行

(7)EXCEPT和Not in的区别?

**没有EXCEPT的用法

(8)INTERSECT和UNION的区别?

**没有INTERSECT的用法



 
评论 】 【 推荐 】 【 打印
上一篇:ASP.NET 2.0中层次数据的处理
下一篇:C#开发的两个基本编程原则的深入讨论
相关新闻