1

好的,所以我已经连续尝试和测试了几个小时,但我似乎无法让我的查询更快地工作。

我有一个巨大的疑问,UNION ALL他们之间有很多。遗憾的是,查询执行大约需要 10 秒,当然,这对于用户来说等待时间太长了。

它看起来像这样(简化版):

SELECT distinct  * 
FROM (
    SELECT 
        'QUD' as typeString, 
        1 as typeInt,
        Process.END_USER_PROJECT.id,
        .......,
        1 as actionAvailable
    FROM Process.END_USER_PROJECT (nolock)
    INNER JOIN Process.EXTERNAL_ORGANISATION (nolock)
        ON externalID = Process.EXTERNAL_ORGANISATION.Id
    WHERE externalID = 1111

UNION ALL

    SELECT 'SPECS' AS typeString, 
        2 as typeInt ,
        Process.SPECIFICATION_GENERAL.id,
        ......., 
        1 as actionAvailable
    FROM Process.SPECIFICATION_GENERAL (nolock)
    INNER JOIN Process.END_USER_PROJECT (nolock) 
        ON Process.SPECIFICATION_GENERAL.EndUserProjectId = Process.END_USER_PROJECT.id
    INNER JOIN ....
    WHERE externalID = 1112

UNION ALL

    ....................

UNION ALL

    ....................

--AND SO ON...
) AS myTempTable ORDER BY typeString, ....

我一直在寻找VIEWS可能使其工作得更快,但事实并非如此。它给了我大约相同的时间来处理整个查询。

我的选择已经不多了,我真的应该让它发挥作用。

任何人都有优化的想法,特别是在我的情况下?

4

1 回答 1

0

您至少应该在 externalID 上有一个索引:

Create index [indexname] on [tablename] (externalID)
于 2013-01-18T11:03:52.550 回答