Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bisakah kueri yang membaca variabel tabel menghasilkan rencana eksekusi paralel di SQL Server 2008?

Oke, saya punya pilihan paralel tapi tidak pada variabel tabel

Saya telah menganonimkannya dan:

  • BigParallelTable memiliki lebar 900 ribu baris
  • Untuk alasan lama, BigParallelTable sebagian didenormalisasi (akan saya perbaiki nanti, janji)
  • BigParallelTable sering membuat paket paralel karena tidak ideal dan "mahal"
  • SQL Server 2005 x64, SP3, build 4035, 16 core

Kueri + paket:

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]))

Sekarang, memikirkannya, variabel tabel hampir selalu merupakan pemindaian tabel, tidak memiliki statistik dan diasumsikan satu baris "Perkiraan jumlah baris =1", "Actual.. =3".

Bisakah kita mendeklarasikan bahwa variabel tabel tidak digunakan secara paralel, tetapi rencana yang berisi dapat menggunakan paralelisme di tempat lain? Jadi BOL benar dan artikel Penyimpanan SQL salah



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urutan pernyataan SQL Select tanpa klausa Order By

  2. Bagaimana menghitung rata-rata bergerak selama n jam terakhir

  3. Mengonfigurasi Notifikasi Email Database di MS SQL Server

  4. Cara mendapatkan baris acak dari Tabel SQL Server - Tutorial SQL Server / TSQL Bagian 117

  5. Bagaimana menjalankan prosedur tersimpan server sql secara asinkron dan memastikannya selesai