我使用Azure Sql DB时遇到了可怕的性能问题。
它的一个表特别具有以下模式:
CREATE TABLE [dbo].[RawTwitter](
[Id] [int] IDENTITY(1,1) NOT NULL,
[IsError] [bit] NULL,
[ErrorDescription] [nvarchar](max) NULL,
[IsProcessed] [bit] NULL,
[IsRunResult] [bit] NULL,
[RawJson] [nvarchar](max) NULL,
RawJson字段是罪魁祸首。如果我做一个包含该字段的SELECT,我的查询需要几分钟 - 比如20分钟!如果我立即将该列从查询中删除。该表中只有大约45,000条记录!
我没有在本地获取此问题所以我编写了该表的脚本,发现它与Azure上的不同。在本地,以下内容附加到表脚本:
CONSTRAINT [PK_RawTwitter] 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] TEXTIMAGE_ON [PRIMARY]
但在Azure版本中,省略了TEXTIMAGE_ON [PRIMARY]。做了一些挖掘后,Azure似乎不允许最后一个关键字?这似乎会影响文本字段的存储大小。
这似乎是我本地和舞台演出之间存在如此巨大差异的明显原因。我可以尝试哪些其他方法来解决这场表演噩梦?