Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server pivot so với nhiều tham gia

Câu trả lời tất nhiên sẽ là "nó phụ thuộc" nhưng dựa trên thử nghiệm kết thúc này ...

Giả định

  1. 1 triệu sản phẩm
  2. product có chỉ mục được phân nhóm trên product_id
  3. Hầu hết (nếu không phải tất cả) sản phẩm có thông tin tương ứng trong product_code bảng
  4. Các chỉ mục lý tưởng có trên product_code cho cả hai truy vấn.

PIVOT phiên bản lý tưởng nhất cần có chỉ mục product_code(product_id, type) INCLUDE (code) trong khi JOIN phiên bản lý tưởng nhất cần có chỉ mục product_code(type,product_id) INCLUDE (code)

Nếu những điều này xảy ra, hãy đưa ra các kế hoạch bên dưới

sau đó là JOIN phiên bản hiệu quả hơn.

Trong trường hợp type 1type 2types duy nhất trong bảng rồi đến PIVOT phiên bản hơi có lợi thế về số lần đọc vì nó không phải tìm kiếm product_code hai lần nhưng điều đó còn nhiều hơn do chi phí bổ sung của nhà điều hành tổng hợp luồng

PIVOT

Table 'product_code'. Scan count 1, logical reads 10467
Table 'product'. Scan count 1, logical reads 4750
   CPU time = 3297 ms,  elapsed time = 3260 ms.

THAM GIA

Table 'product_code'. Scan count 2, logical reads 10471
Table 'product'. Scan count 1, logical reads 4750
   CPU time = 1906 ms,  elapsed time = 1866 ms.

Nếu có thêm type các bản ghi khác với 12 JOIN phiên bản sẽ tăng lợi thế của nó vì nó chỉ hợp nhất các phần liên quan của loại type,product_id chỉ mục trong khi PIVOT gói sử dụng product_id, type và do đó sẽ phải quét qua type bổ sung các hàng xen kẽ với 12 hàng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trả lại các khóa chính từ một máy chủ được liên kết trong SQL Server (Ví dụ T-SQL)

  2. Đếm dựa trên điều kiện trong SQL Server

  3. Cách tạo lịch sử HOẶC Chế độ xem kiểm tra từ thay đổi bảng thu thập dữ liệu (CDC) trong SQL Server - Hướng dẫn sử dụng SQL Server

  4. Cách tạo công việc trong phiên bản SQL Server Express

  5. TDS Server - Sử dụng các câu lệnh Transact-SQL (T-SQL) để làm việc với dữ liệu Salesforce trong SQL Server