我有一个简单的SQL查询,用于更新数据库中的单行...
@SettingValue包含大约2000,000字节(2mb)的文本。这是非常大的,但它不是很大,并且该领域可以接受长达2GB的长度。
表本身只有大约50行,这是唯一拥有这么多数据的行。
在我的开发机器上,编写数据大约需要一秒钟,但在生产(SQL 2005)中大约需要2分钟。
我觉得在尝试编写数据时它正在进行某种分页。
是否有任何工具可以监控SQL Server以确切了解它正在做什么?我有SQL Profiler,但我没有看到任何明显的东西,尽管我只使用标准的TSQL_Duration。
ALTER PROCEDURE [dbo].[Setsetting] @SurgId INT,
@SettingKey NVARCHAR(10),
@SettingValue NVARCHAR(max),
@UserId INT
AS
DECLARE @setid INT
SELECT @setid = id
FROM [general setting]
WHERE [key] = @SettingKey
AND surg = @SurgId
IF @setid IS NULL
INSERT INTO [General Setting]
(surg,[key],setval,lastupd,
whoupd)
VALUES (@SurgId,@SettingKey,@SettingValue,Getdate(),
@UserId)
ELSE
UPDATE [General Setting]
SET setval = @SettingValue,
lastupd = Getdate(),
whoupd = @UserId
WHERE id = @setid
表格定义如下。
CREATE TABLE [dbo].[General Setting]
(
[id] [INT] IDENTITY(1, 1) NOT NULL,
[surg] [INT] NOT NULL,
[key] [NVARCHAR](8) NOT NULL,
[setval] [NVARCHAR](max) NULL,
[lastupd] [DATETIME] NULL,
[whoupd] [INT] NULL,
CONSTRAINT [PK_General_Setting] PRIMARY KEY CLUSTERED ( [id] ASC )
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)
ON [PRIMARY]