我有一个简单的查询,使用索引列,针对非常小的数据集,返回 1 行,访问 Azure SQL 数据库 - 耗时超过 1/2 秒。此查询的另一次早期执行耗时 38 毫秒。
查询:
SELECT [a].[Id], [a].[ClaimType], [a].[ClaimValue], [a].[UserId]
FROM [AspNetUserClaims] AS [a]
WHERE [a].[UserId] = @__id_0
数据库中有 36 行。UserId 是一个字符串,是 GUID。ClaimType 和 ClaimValue 是长度为 1 到 35 个字符的字符串。
2行数据:
Id ClaimType ClaimValue UserId
5 SysAdmin * e69fac60-ea9b-4f73-8c7b-4cb75ec9721a
6 Admin Arapahoe e69fac60-ea9b-4f73-8c7b-4cb75ec9721a
我如何找出为什么读取速度有时很慢的原因?
此查询的成本微不足道。因此,如果它有时很慢,则可能是阻塞。 查询存储会告诉您
如果由于其他会话正在修改表并且被阻塞而导致速度很慢,则可以使用 SNAPSHOT 隔离进行读取,或者将数据库切换到 READ_COMMITTED_SNAPSHOT 模式。