代码之家  ›  专栏  ›  技术社区  ›  hgulyan

在SQL Server中使用With子句

  •  2
  • hgulyan  · 技术社区  · 16 年前

    with

    什么时候使用它是正确的?你应该知道什么 具有 在你开始使用它之前?

    下面是我所说的一个例子:

    http://www.dotnetspider.com/resources/33984-Use-With-Clause-Sql-Server.aspx

    3 回复  |  直到 9 年前
        1
  •  3
  •   Quassnoi    16 年前

    除非使用递归功能,否则 CTE

    当它被重用时,优化器可以自由决定是否重新评估它,并且在大多数情况下它决定重新评估:

    WITH    q (uuid) AS
            (
            SELECT  NEWID()
            )
    SELECT  *
    FROM    q
    UNION ALL
    SELECT  *
    FROM    q
    

    会给你们两个不同的回报 NEWIDs

    请注意,其他发动机可能表现不同。

    PostgreSQL ,与 SQL Server ,实现 CTEs .

    Oracle /*+ MATERIALIZE */ ,它告诉优化器是否应该实现 不管怎样。

        2
  •  5
  •   Coxy    16 年前

    我不完全确定性能优势,但我认为在使用子查询会导致子查询执行多次的情况下,它肯定会有所帮助。

    除此之外,它肯定可以使代码更具可读性,也可以用于多个子查询将同一代码剪切粘贴到不同位置的情况。

    在你使用它之前你应该知道什么?

        3
  •  -1
  •   Nandish    9 年前

    with 是SQL中的关键字,它只将临时结果存储在临时表中。例子:

    with a(--here a is the temporary table)
    (id)(--id acts as colomn for table a )
     as(select colomn_name from table_name )
    
    select * from a
    
    推荐文章