SQLSERVER2000帮助中关于表提示的描述:
鼓励使用 WITH 关键字,尽管目前这还不是必须。在将来的 SQL Server 版本中,WITH 可能会成为必需的关键字。

解决方案 »

  1.   

    TO hellowork:
    谢谢
    我也这以认为
    在2005里有区别吗?
      

  2.   

    在2005里面也没有区别
    不过个人感觉加上 with 规范一点,完全是自己跟自己找事insert 也是一样,以前写insert都是后面直接跟表名
    后来感觉自己的代码少了不好看就加上insert into这个with也是一样
      

  3.   

    SQLSERVER2005与SQLSERVER2000不同,要求有with关键字
    请参考:
    http://msdn2.microsoft.com/zh-cn/library/ms177634.aspx
    http://msdn2.microsoft.com/zh-cn/library/ms187373.aspx
      

  4.   

    按规范的写,建议用with (nolock),但两者在效果上没有差别。
      

  5.   

    WITH (<table_hint> )
    指定查询优化器对此表和此语句使用优化或锁定策略。有关详细信息,请参阅表提示 (Transact-SQL)。在 SQL Server 2005 中,除一些例外情况之外,仅当使用了 WITH 关键字指定表提示时,FROM 子句中才支持这些提示。指定表提示时还必须使用圆括号。 使用或不使用 WITH 关键字均可使用的表提示如下:NOLOCK、READUNCOMMITTED、UPDLOCK、REPEATABLEREAD、SERIALIZABLE、READCOMMITTED、FASTFIRSTROW、TABLOCK、TABLOCKX、PAGLOCK、ROWLOCK、NOWAIT、READPAST、XLOCK 和 NOEXPAND。不使用 WITH 关键字指定这些表提示时,必须单独指定提示。例如:FROM t (fastfirstrow)。使用另一个选项指定提示时(如 (fastfirstrow, index(myindex) 所示),必须使用 WITH 关键字指定提示,例如: FROM t WITH (fastfirstrow, index(myindex)).当数据库的兼容级别为 80 或更低时,可以不使用 WITH 关键字来指定提示。
    从这句话来讲,with(nolock)和nolock不加with在2005里是相同的.
      

  6.   

    insert 就尽量使用into,因为oracle得其他数据库必须使用into
      

  7.   

    其实就像 delete <tableName> 一样 系统会自动写为 delete from <tableName>
    from table nolock 也会被自动写为from table with(nolock)