Оптимизация медленного запроса UNION ALL для нескольких БД - PullRequest
0 голосов
/ 26 июня 2018
SELECT 'ULTIPRO_MDUSG0002' AS dbname
           ,max(EventDate)
FROM [ULTIPRO_MDUSG0002].DBO.vw_rbsUserLoginHistorywhere SourceType = 
'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0027' AS dbname
           ,max(EventDate)
FROM [ULTIPRO_MDUSG0027].DBO.vw_rbsUserLoginHistorywhere SourceType =     'MOBILE'
    UNION ALL
    SELECT 'ULTIPRO_MDUSG0028' AS dbname
               ,max(EventDate)
    FROM [ULTIPRO_MDUSG0028].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
    UNION ALL
    SELECT 'ULTIPRO_MDUSG0050' AS dbname
               ,max(EventDate)
    FROM [ULTIPRO_MDUSG0050].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0051' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0051].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0071' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0071].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0072' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0072].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0073' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0073].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0074' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0074].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0075' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0075].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0076' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0076].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0077' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0077].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0078' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0078].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0079' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0079].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0080' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0080].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0081' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0081].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0082' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0082].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0084' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0084].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0089' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0089].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0090' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0090].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0091' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0091].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0096' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0096].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0155' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0155].DBO.vw_rbsUserLoginHistorywhere SourceType =     'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0156' AS dbname
               ,max(EventDate)    
FROM [ULTIPRO_MDUSG0156].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0157' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0157].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0158' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0158].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0159' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0159].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0182' AS dbname
               ,max(EventDate)
FROM [ULTIPRO_MDUSG0182].DBO.vw_rbsUserLoginHistorywhere SourceType = 'MOBILE'
UNION

1 Ответ

0 голосов
/ 26 июня 2018

вы можете попытаться создать такой вид. Это может немного увеличить скорость, просто выполняя запросы к этому источнику, просто добавив остаток внизу (также требуется пробел перед where)

CREATE VIEW AllHistory
AS

SELECT 'ULTIPRO_MDUSG0002' AS dbname
           ,max(EventDate)
FROM [ULTIPRO_MDUSG0002].DBO.vw_rbsUserLoginHistory where SourceType = 
'MOBILE'
UNION ALL
SELECT 'ULTIPRO_MDUSG0027' AS dbname
       ,max(EventDate)
FROM [ULTIPRO_MDUSG0027].DBO.vw_rbsUserLoginHistory where SourceType =     'MOBILE'
UNION ALL
--the rest of them here.. 

тогда

SELECT * 
FROM AllHistory
...