是否已创建SQL Azure缓存行?

时间:2014-06-30 01:42:09

标签: sql-server azure-sql-database

我有一个存储过程,插入一行如下:

CREATE PROCEDURE dbo.sp_add_test  
    @CreatedBy NVARCHAR (128),       
    @TestId    INT      
AS 
BEGIN  
    SET NOCOUNT ON 
    INSERT INTO dbo.Test (
       CreatedDate,
       Title,
       ParentTestId,        
    )
    SELECT 
       @CreatedDate
       Title,
       @TestId
    FROM    Test
    WHERE   TestId = @TestId;

    SELECT * from Test
    WHERE   TestId = @TestId
    AND    CreatedDate = @CreatedDate;
END

插入后,将为主键生成新的标识值。插入完成后,我会从该表中进行选择。

有人可以告诉我是否还有其他办法可以做到这一点?我做第二次选择的原因是我需要为新的TestId获取一个标识列的值。

我不熟悉SQL Server缓存数据的方式。它是否以与Oracle相同的方式缓存最近使用的行,还是将其转到磁盘以获取刚刚插入的行?

1 个答案:

答案 0 :(得分:0)

在SQL Server中,执行此操作的正确方法是使用OUTPUT子句。文档为here

据我所知,SQL Azure支持OUTPUT子句。

至于你的问题,当数据库作为页面提交时(即insert完成时),页面通常会保留在内存中。通常,“提交”是日志操作,因此数据页面保留在内存中。在不需要磁盘访问的意义上,对页面的立即访问应该很快。但是OUTPUT子句是SQL Server中的正确方法。