Sql server 当特定列位于SELECT语句中时,查询速度非常慢
我有一个生成的SQL查询(实体框架生成的查询),当我有一个Sql server 当特定列位于SELECT语句中时,查询速度非常慢,sql-server,Sql Server,我有一个生成的SQL查询(实体框架生成的查询),当我有一个orderby子句时,查询速度非常慢。经过如此多的调查,有趣的是,我发现每当我在选择的列列表中有用户名列时,查询就会变得非常慢(55秒),但如果我从同一个表中选择除用户名之外的任何列,查询都会以毫秒为单位响应 这就是问题所在 SELECT [r].[Amount], [r].[DeductedAmount], [r].[LoyaltyPoints], [r].[ClientTransactionId], [r].[Qu
orderby
子句时,查询速度非常慢。经过如此多的调查,有趣的是,我发现每当我在选择
的列列表中有用户名
列时,查询就会变得非常慢(55秒),但如果我从同一个表中选择除用户名
之外的任何列,查询都会以毫秒为单位响应
这就是问题所在
SELECT
[r].[Amount], [r].[DeductedAmount], [r].[LoyaltyPoints],
[r].[ClientTransactionId], [r].[Quantity], [r].[RechargeTypeId],
[r0].[Name], [r].[ReferenceNo], [r].[TransactionStatusId],
[t].[Name] AS [Name0], [r].[TransactionDateTime], [r].[TransactionDate],
[r].[ResultCode], [u].UserName as username, [r].[ResultMessage],
[r].[Id], [s].[Id] AS [Id0], [u].[Id] AS [Id1], [r0].[Id] AS [Id2],
[t].[Id] AS [Id3]
FROM
[Recharge].[RechargeTransaction] AS [r]
INNER JOIN
[Sales].[SalesPoint] AS [s] ON [r].[SalesPointId] = [s].[Id]
INNER JOIN
[Account].[User] AS [u] ON [s].[UserId] = [u].[Id]
INNER JOIN
[Recharge].[RechargeType] AS [r0] ON [r].[RechargeTypeId] = [r0].[Id]
INNER JOIN
[Recharge].[TransactionStatus] AS [t] ON [r].[TransactionStatusId] = [t].[Id]
WHERE
CHARINDEX(N'sample-username', [u].[UserName]) > 0
ORDER BY
[r].[ReferenceNo]
值得一提的是,所有主键都是带有非聚集索引的GUID
UserName
列是nvarchar(256)
,并且有一个唯一的索引经过几次调查,我发现如果我将列大小减少到100,响应时间就会变成毫秒。这种方法解决了我的问题,但我仍然不知道为什么列的大小会影响查询的响应时间