ORDER BY
절이 있을 때 매우 느린 생성 된 SQL 쿼리 (Entity Framework에서 쿼리 생성)가 있습니다. 많은 조사를 한 결과 흥미롭게도 의 열 목록에 UserName
열 이있을 때마다 SELECT
쿼리가 매우 느려졌지만 (55 초)를 제외한 동일한 테이블에서 열을 선택 UserName
하면 쿼리가 밀리 초 단위로 응답 한다는 것을 알게 되었습니다 .
이것은 쿼리입니다
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으로 줄이면 응답 시간이 밀리 초가된다는 것을 알았습니다. 이 접근 방식으로 문제가 해결되었지만 열 크기가 쿼리 응답 시간에 영향을 미치는 이유를 여전히 알 수 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다