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 に答える