(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的用法
