Order By Clause занимает слишком много времени в SQL - PullRequest
1 голос
/ 09 января 2012
SELECT     dteRun,                 
CASE WHEN coalesce(nPriorityCode,0) <= 0 THEN 3
               ELSE nPriorityCode
               END AS nPriorityCode,
               CASE WHEN sCommand IN ('DiaryWF','XC_Reminder') THEN '*'
               ELSE ''
               END as Alert,
               sParentRef,
               nWorkflowTypeCode,
               sSubjectName,
               sDescription,
               sUniqueRef,
               sUserInfo,
               sUserInfo2   
FROM    AuroraTasksDiaryView ad
    INNER JOIN   UserAuthority
         ON UserAuthority.UserName = ad.sOwningUser
         AND ad.sOwningUser  = 'ammonsd'  AND  ad. nErrorCode = -1
         AND ad.sExcludedUser <>   ad.sOwningUser
         AND UserAuthority.FunctionCode = ad.sFunctionCode
        AND ( (UserAuthority.LowerBound <=  ad.nTaskValue
        AND UserAuthority.UpperBound >=  ad.nTaskValue)
        OR ad.sFunctionCode = 'RTS')
        AND  RowNum <= 100
        ORDER BY dteRun

Когда я опускаю запрос "Order By dteRun", он выполняется за миллисекунды, однако с помощью Order By Clause это занимает больше минуты.В чем проблема с Order By Clause?

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Предположительно нет индекса для столбца dteRun. Если вы хотите быстро ORDER BY для столбца, ему нужен индекс.

1 голос
/ 09 января 2012

Требуется индекс по столбцам в предложении Order By, предпочтительно в том же порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...