时不经常能够蒙受这种情景

中央提示:时不常可以遭遇这种情形:用差异的SQL写法能够直达同等的目标

不经常能够境遇这种场合:用差别的SQL写法能够完结同等的目标。爱钻牛犄角的人就想搞领会,诚然结果一律,但终归孰优孰劣?上边是自个儿列出的片段,请兄弟们求教。也请兄弟们将你们遭逢的好像难点一并列出。

(1卡塔尔(قطر‎三次插入多条数据时:CREATE TABLE tb(ID int, 名称 NVARCHAMurano(30卡塔尔, 备注
NVARCHA宝马X3(1000State of QatarState of QatarINSERT tbSELECT 1,DDD,1UNIONALLSELECT
1,5100,DUNIONALLSELECT 1,5200,E

也足以如此:CREATE TABLE tb1(ID int, 名称 NVARCHA瑞鹰(30卡塔尔, 备注
NVARCHAHighlander(1000State of Qatar卡塔尔国INSERT TB1 (ID,名称,备注卡塔尔VALUES(1,DDD,1State of QatarINSERT TB1
(ID,名称,备注State of QatarVALUES(1,5100,D卡塔尔国INSERT TB1
(ID,名称,备注State of QatarVALUES(1,5200,E卡塔尔_________________________________地点二种艺术,哪一类艺术功能高?

(2)赋值时:SELECT @a=NaaSET
@a=Naa_________________________________地方三种情势,哪一类方法效能高?

(3State of Qatar取前几条数据时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,1State of Qatar_________________________________下面三种方法,哪一类办法效用高?

(6卡塔尔(قطر‎从字符串中取子字符串时substring(abcdefg,1,3卡塔尔(قطر‎left(abcderg,3卡塔尔_________________________________地点三种办法,哪一类艺术效用高?

(7)EXCEPT和Not in的区别?

(8State of QatarINTEOdysseySECT和UNION的差别?上面是邹老大的回复:

(1卡塔尔(قطر‎叁遍插入多条数据时:

第1种好有的, 但也得有个, 因为第1种的union all是做为一个言语整体,
查询优化器会尝试做优化, 同偶然候, 也要先算出这些结果再插入的.

  1. 设假如单个赋值, 未有怎么好比较的话.但是, 如若是为四个变量赋值,
    小编测量试验过, SELECT 三次性赋值, 比用SET 每个赋值功能好.

  2. SET ROWCOUNT和TOP 是平等的, 包涵实践的陈设等都是千篇一律的

  3. 那几个貌似是exists快, 当然, 具体还要看你前面包车型大巴子查询的尺码,
    是或不是会引用外层查询中的对象的列.exists检查到有值就回去, 况且不回来结果集,
    count必要计算出拥有满足条件的, 再回去叁个结果集, 所以经常情况下exists快.

  4. 相应是一模一样的

  5. 大多是相通的

  6. except会去重新, not in
    不会(除非您在select中显式钦定卡塔尔国except用于相比的列是具备列,
    除非写子查询约束列, not in 未有这种状态8.
    intersect是七个查询皆有个别非重复值(交集卡塔尔(قطر‎,
    union是七个查询结果的有着不重复值(并集State of Qatar

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website