电脑安全

您当前的位置:主页 > 电脑安全 >

MSSQL各种写法的效率问题-网络编程

来源:[db:来源]标题:   方法    编辑:电脑技术全能网 时间:2019-09-18 12:29

原标题:MSSQL各种写法的效率问题-网络编程
   中心提醒:常常能够碰到这类情形:用差别的SQL写法能够到达一样的目标  常常能够碰到这类情形:用差别的SQL写法能够到达一样的目标。爱钻牛角尖的人就想搞清楚,固然成果一样,但究竟孰优孰劣?上面是我列出的一些,请兄弟们见教。也请兄弟们将你们碰到的相似成绩一并列出。  (1)一次拔出多条数据时:CREATE TABLE tb(ID int, 称号 NVARCHAR(30), 备注 NVARCHAR(1000))INSERT tbSELECT 1,'DDD',1UNIONALLSELECT 1,'5100','D'UNIONALLSELECT 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'_________________________________下面两种方式,哪类方式效力高?  (3)取前几条数据时set ROWCOUNT 2 select * from tb order by fdselect Top 2 * from tb order by fd_________________________________下面两种方式,哪类方式效力高?  (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 endupdate tb set fd=nullif(fd,1)_________________________________下面两种方式,哪类方式效力高?  (6)从字符串中取子字符串时substring('abcdefg',1,3)left('abcderg',3)_________________________________下面两种方式,哪类方式效力高?  (7)EXCEPT和Not in的差别?  (8)INTERSECT和UNION的差别?上面是邹老迈的答复:  'http://blog.knowsky.com  (1)一次拔出多条数据时:  第1种好一些, 但也得有个, 由于第1种的union all是做为一个语句团体, 查问优化器会实验做优化, 同时, 也要先算出这个成果再拔出的.    2. 假如是单个赋值, 没有甚么比如较的话.不外, 假如是为多个变量赋值, 我测试过, SELECT 一次性赋值, 比用SET 一一赋值效力好.    3. SET ROWCOUNT和TOP 是一样的, 包含履行的打算等都是一样的  4. 这个个别是exists快, 固然, 详细还要看你前面的子查问的前提, 能否会援用外层查问中的工具的列.exists检讨到有值就前往, 并且不前往成果集, count须要统计出全部满意前提的, 再前往一个成果集, 以是个别情形下exists快.  5. 应当是一样的    6. 基础上是一样的  7. except会去反复, not in 不会(除非你在select中显式指定)except用于比拟的列是全部列, 除非写子查问限度列, not in 没有这类情形8. intersect是两个查问都有的非反复值(交加), union是两个查问成果的全部不反复值(并集)

上一篇:MYSQL使用简述-网络编程

下一篇:没有了