Được, tôi có một lựa chọn song song nhưng không trên biến bảng
Tôi đã ẩn danh nó và:
- BigParallelTable rộng 900 nghìn hàng
- Vì những lý do cũ, BigParallelTable bị mất chuẩn hóa một phần (tôi sẽ sửa nó, xin hứa sau)
- BigParallelTable thường tạo các kế hoạch song song vì nó không lý tưởng và "đắt"
- SQL Server 2005 x64, SP3, bản dựng 4035, 16 lõi
Truy vấn + kế hoạch:
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]))
Bây giờ, suy nghĩ về nó, một biến bảng hầu như luôn luôn là một bảng quét, không có số liệu thống kê và được giả định là một hàng "Số hàng ước tính =1", "Thực tế .. =3".
Chúng ta có thể khai báo rằng các biến bảng không được sử dụng song song, nhưng kế hoạch chứa có thể sử dụng song song ở những nơi khác không? Vì vậy, BOL là đúng và bài viết Lưu trữ SQL là sai