SQL план выполнения вложенного цикла - PullRequest
0 голосов
/ 06 января 2010

пытается удалить вложенный цикл в плане выполнения запроса, который у меня есть (mssql 2005). иметь следующую таблицу:

TxnID bigint CustID bigint col1 varchar (4) col2 varchar (4) col3 varchar (4) TxnCurrency char (3) TxnAmt деньги TxnDate datetime

-- query 1
SELECT CustID, TxnCurrency, SUM(TxnAmt) AS TxnAmt
FROM   table
WHERE  TxnDate >= @date1 and TxnDate < @date2
       and col1 IN ( @list )
       and col2 = @param
GROUP BY CustID, TxnCurrency

-- query 2
SELECT TxnCurrency, SUM(TxnAmt) AS TxnAmt
FROM   table
WHERE  TxnDate >= @date1 and TxnDate < @date2
       and CustID = @custID
GROUP BY TxnCurrency

TxnID является первичным ключом, имеет кластеризованный индекс CustID, TxnDate

Должен ли я создать еще один индекс со столбцами включения для разрешения вложенного цикла?

1 Ответ

0 голосов
/ 06 января 2010

Эти запросы разделены или они объединяются?

В запросе 1, если вы собираетесь выбирать только на основе TxnDate, вам, вероятно, следует поместить некластеризованный индекс в этот столбец.

Вложенные циклы не всегда плохи. В зависимости от размера наборов, с которыми вы работаете, они могут быть оптимальными. Как вы думаете, вы бы видели лучшие результаты с Merge или Hash join?

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