2013-06-10 2 views
1

왜 DNN은 지속적으로이 쿼리를 실행 :DNN 카운트 사용자 쿼리

Select count(*) 
from dbo.DNN_vw_users 
where portalID = @PortalID and IsDeleted = 0 

이 쿼리 600,000ms에 걸쳐 총 CPU 시간을 복용하고 여전히 증가.

USE [gssdb] 

(표에서) 직접 SELECT를 사용하는

ALTER VIEW [dbo].[DNN_vw_Users] 

AS 
SELECT  
    U.UserID, 
    UP.PortalId, 
    U.Username, 
    U.FirstName, 
    U.LastName, 
    U.DisplayName, 
    U.IsSuperUser, 
    U.Email, 
    U.AffiliateId, 
    U.UpdatePassword, 
    UP.Authorised, 
      (CASE WHEN UP.PortalId IS NULL THEN U.IsDeleted ELSE UP.IsDeleted END) AS IsDeleted, 
    UP.RefreshRoles, 
    U.LastIPAddress, 
    U.CreatedByUserID, 
    U.CreatedOnDate, 
    U.LastModifiedByUserID, 
    U.LastModifiedOnDate 
FROM dbo.DNN_Users AS U 
    LEFT OUTER JOIN dbo.DNN_UserPortals AS UP ON U.UserID = UP.UserId 

답변

0

시도를 GO -

SELECT COUNT(1) 
FROM dbo.DNN_tbl_users 
WHERE portalID = @PortalID 
    AND IsDeleted = 0 

갱신 2 :

SELECT COUNT(1) 
FROM dbo.DNN_Users U --WITH(NOWAIT) 
WHERE U.IsDeleted = 0 
    AND U.UserID IN (
     SELECT UP.UserID 
     FROM dbo.DNN_UserPortals UP --WITH(NOWAIT) 
     WHERE UP.portalID = @PortalID 
      AND UP.IsDeleted = 0 
    ) 

업데이트 3 :가 포함 된 열 목록 수 있습니다 경우

SELECT COUNT(1) 
FROM dbo.DNN_Users U --WITH(NOWAIT) 
JOIN (
    SELECT UP.UserID 
    FROM dbo.DNN_UserPortals UP --WITH(NOWAIT) 
    WHERE UP.portalID = @PortalID 
     AND UP.IsDeleted = 0 
) UP ON U.UserID = UP.UserID 
+0

내가 왜 proc를 중지하거나 삭제할 수 있는지 DNN이 연속적으로하는 이유를 알아야합니다. – kolexinfos

+0

'dbo.DNN_vw_users'에 DDL을 제공하십시오. – Devart

+0

방금 ​​DDL로 내 질문을 편집했습니다. 총 CPU 수는 800K 이상입니다 – kolexinfos

0

제안 무엇 DEVART 잘입니다 ... 그것의 카운트를 얻는 방법이 더 걸릴 것으로 대신 모든 컬럼의 열을 기준으로 계산하려고 예를 들면. "이미지"열.

위의 경우가 아니라면 참고 - 내가보기에있는 경우 다음 일시적으로 거래를 제거, 그것은 같은 경우 당신은 어떤 목적을 위해 뭔가에 단위 테스트 것을 제안하고 싶습니다 또는 테이블을 사용하여 카운트 쿼리가 트랜잭션이 종료 될 때까지 유한 한 시간을 제공합니다. 그러나 내가 단위 테스트를 언급했을 때, 프로덕션 데이터베이스/환경에 있지 않은 것으로 가정하면 그 환경에서 트랜잭션을 제거하는 재앙적인 영향을 미칠 수 있습니다.

0

DNN의 사용자 온라인 기능을 사용하지 않는 경우 호스트 설정에서 해당 기능을 비활성화 할 수 있습니다. 카운트가 지속적으로 실행되는 원인이 될 가능성이 높습니다.

+0

사용자 온라인 모듈을 사용하고 있지 않습니다.이 쿼리가 계속 실행되지 않도록하려면 어떻게해야합니까? – kolexinfos

+0

모듈을 사용하고 있지 않거나 호스트 설정에서 사용자 온라인을 사용할 수 없습니까? –