Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy kwerendy odczytujące zmienne tabeli mogą generować plany wykonywania równoległego w programie SQL Server 2008?

OK, mam wybór równoległy, ale nie w zmiennej tabeli

Zanonimizowałem to i:

  • BigParallelTable ma 900 tys. rzędów i jest szeroki
  • Ze względów starszych, BigParallelTable jest częściowo zdenormalizowany (naprawię to później, obiecuję)
  • BigParallelTable często generuje plany równoległe, ponieważ nie jest idealny i jest „drogi”
  • SQL Server 2005 x64, SP3, kompilacja 4035, 16 rdzeni

Zapytanie + plan:

DECLARE @FilterList TABLE (bar varchar(100) NOT NULL)

INSERT @FilterList (bar)
SELECT 'val1' UNION ALL 'val2' UNION ALL 'val3'

--snipped

SELECT
     *
FROM
    dbo.BigParallelTable BPT
    JOIN
    @FilterList FL ON BPT.Thing = FL.Bar

StmtText
  |--Parallelism(Gather Streams)
       |--Hash Match(Inner Join, HASH:([FL].[bar])=([BPT].[Thing]), RESIDUAL:(@FilterList.[bar] as [FL].[bar]=[MyDB].[dbo].[BigParallelTable].[Thing] as [BPT].[Thing]))
            |--Parallelism(Distribute Streams, Broadcast Partitioning)
            |    |--Table Scan(OBJECT:(@FilterList AS [FL]))
            |--Clustered Index Scan(OBJECT:([MyDB].[dbo].[BigParallelTable].[PK_BigParallelTable] AS [BPT]))

Teraz, myśląc o tym, zmienna tabeli prawie zawsze jest skanem tabeli, nie ma statystyk i zakłada się, że jeden wiersz „Szacowana liczba wierszy =1”, „Rzeczywista.. =3”.

Czy możemy zadeklarować, że zmienne tabeli nie są używane równolegle, ale plan zawierający może używać równoległości gdzie indziej? Tak więc BOL jest poprawny, a artykuł o SQL Storage jest błędny



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użycie programu SQL Server sp_msforeachtable, aby wybrać tylko te tabele, które spełniają określone warunki

  2. Oblicz sumę bieżącą / bilans bieżący

  3. Dane przestawne w T-SQL

  4. Jak znaleźć katalog danych dla instancji SQL Server?

  5. Jak zwiększyć maksymalny dozwolony rozmiar załącznika dla wiadomości e-mail wysyłanych przy użyciu msdb.dbo.sp_send_dbmail w programie Microsoft SQL Server 2005/2008