我目前正在处理性能/内存消耗优化的应用程序。要执行的任务之一是将一个表中与空数组对应的所有斑点替换为空值;这应该减少分贝大小,内存消耗和加速负载。下面是表定义:SQL Server性能下降
CREATE TABLE [dbo].[SampleTable](
[id] [bigint] NOT NULL,
[creationTime] [datetime] NULL,
[binaryData] [image] NULL,
[isEvent] [bit] NULL,
[lastSavedTime] [datetime] NULL,
CONSTRAINT [PK_SampleTable] 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]
我更新的表,并替换为NULL值在适当情况下(对应于空白在应用阵列的数据)的图像字段的值(binaryData)。现在,我观察运行普通SELECT * FROM SampleTable时的性能下降情况。
最初那些已更新的字段的长度为512字节,但不确定是否重要。
即使数据对于不同的行是相同的,为什么选择包含NULL值的blob所需的时间比选择真实的二进制数据还要长?
你确定你是比较苹果和苹果吗?你使用的两个SQL命令是什么?你是否从同一个地方/环境中运行它们? SSMS? – 2010-07-27 20:24:43
对不起,不清楚:我在这两种情况下运行相同的'选择*从表'查询。我以两种不同的方式检查了性能: 1.从Management studio 2.运行连接到db的应用程序并运行查询并检查SQL分析器中的结果。 结果在两种情况下都是相似的。 – Daniel 2010-07-27 20:32:29
什么是类型'[dbo]。[image]'?这是一个自定义的CLR数据类型吗? – 2010-07-27 21:58:23