Azure sql database 在Azure中对具有nvarchar(max)列的表运行查询时,性能非常慢

Azure sql database 在Azure中对具有nvarchar(max)列的表运行查询时,性能非常慢,azure-sql-database,database-performance,Azure Sql Database,Database Performance,我在使用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

我在使用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字段是罪魁祸首。如果我选择包含该字段的字段,我的查询需要几分钟——比如20分钟!如果我从查询中删除该列,它将立即消失。该表中只有大约45000条记录

我在本地没有看到这个问题,所以我编写了这个表的脚本,发现它与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版本中,[PRIMARY]上的文本图像_被省略。在做了更多的挖掘之后,Azure似乎不允许最后一个关键字?这似乎会影响文本字段的存储大小


这似乎是明显的原因,在我的本地和舞台表演之间有如此大的差异。我还可以试着做些什么来避免这个性能噩梦?

在查询下面运行,看看什么是等待类型
选择会话id、开始时间、命令、数据库名称(ec.database id)作为数据库名称、阻塞会话id、等待类型、最后一次等待类型、等待时间、cpu时间、逻辑读取、读取、写入、((database_transaction_log_bytes_used+database_transaction_log_bytes_reserved)/1024)/1024作为logusageMB、txt.text、pln.query_计划从sys.dm_exec_请求ec交叉应用sys.dm_exec_sql_文本(ec.sql_handle)txt交叉应用sys.dm_exec_查询计划(ec.plan_handle)pln join sys.dm\u tran\u database\u transactions trn on trn.transaction\u id=ec.transaction\u id
也粘贴执行计划,您的性能等级您找到解决方案了吗?我对一个包含JSON的列也有类似的问题,即使我返回的记录中该列中没有那么多的数据,当该列包含如果在“选择”中添加,则会增加查询所需时间的25%以上,我不确定原因。