奥义思网站建设-www.aooly.com
奥义思坚信质量高于产量
我们的团队自成立以来,秉承着质量是衡量价值最重要标准的理念,致力于打造高品质数字产品。不放过任何一个小的瑕疵而一蹴而就,体现的不仅是我们对品质的苛求,也是对客户以及产品负责的态度。
马上联系我们,让天才的设计师帮您实现这一切。

    SQL各种写法的效率

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