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