2013-08-28 4 views
1

Мне очень нужна помощь по запросу ниже; с CTE и соединениями, для выполнения требуется еще 44 секунды, однако, когда я запускаю отдельные команды выбора, каждый занимает только 1 секунду. Почему он занимает 44 секунды, когда я присоединяюсь к ним?Оптимизация объединенных SQL CTEs - Server 2008

WITH Z 
    AS (SELECT GM, 
       YQ, 
       IG 
     FROM FN_qryFYQI(@pYQ1)), 
    Y 
    AS (SELECT GM, 
       YQ, 
       IG 
     FROM FN_qryFYQI(@pYQ2)) 
SELECT Z.GM, 
     Z.IG AS IG1, 
     Y.IG AS IG2 
FROM Y 
     INNER JOIN Z 
     ON Y.GM = Z.GM 
+2

Является 'FN_qryFYQI (@ pYQ2)' функцию? Можете ли вы опубликовать определение этого? – Taryn

+4

И план выполнения, пожалуйста. –

+3

И соответствующие определения таблиц, включая любые ключи и/или индексы. – RBarryYoung

ответ

1

Попробуйте один -

SELECT Z.GM 
    , Z.IG AS IG1 
    , Y.IG AS IG2 
FROM FN_qryFYQI(@pYQ1) Y 
JOIN (
    SELECT Z.GM, Z.IG 
    FROM FN_qryFYQI(@pYQ2) Z 
) Z ON Y.GM = Z.GM 
Смежные вопросы