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

Truy vấn trên các chế độ xem có chậm hơn so với thực hiện một truy vấn không?

Trong khi trong ví dụ đơn giản của bạn, mọi thứ sẽ giống nhau, một số thận trọng là cần thiết khi sử dụng các khung nhìn lồng nhau.

Tôi đã làm việc trên một hệ thống mà các truy vấn hết thời gian chờ sau 30 giây được xây dựng dựa trên khoảng 6 cấp độ xem lồng nhau và quản lý để tăng tốc những cấp độ này lên khoảng 100 bằng cách viết lại các truy vấn dựa trên các bảng cơ sở.

Dưới đây là một ví dụ đơn giản về loại vấn đề có thể phát sinh.

CREATE VIEW MaxTypes
AS
SELECT
  [number],
  MAX(type) AS MaxType
  FROM [master].[dbo].[spt_values]
GROUP BY [number]

GO

CREATE VIEW MinTypes
AS
SELECT
  [number],
  MIN(type) AS MinType
  FROM [master].[dbo].[spt_values]
GROUP BY [number]

GO
SET STATISTICS IO ON

SELECT     MaxTypes.number, MinTypes.MinType, MaxTypes.MaxType
FROM         MinTypes INNER JOIN
                      MaxTypes ON MinTypes.number = MaxTypes.number
ORDER BY MaxTypes.number

/*
Gives

Table 'spt_values'. Scan count 2, logical reads 16, physical reads 0, 
read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
*/
GO

SELECT 
  [number],
  MAX(type) AS MaxType,
  MIN(type) AS MinType
  FROM [master].[dbo].[spt_values]
GROUP BY [number]
ORDER BY  [number]

/*
Gives

Table 'spt_values'. Scan count 1, logical reads 8, physical reads 0, 
read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
*/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để tách trường dữ liệu biểu tượng trên bảng tạm thời thành 5 cột?

  2. Khóa duy nhất của SQL Server 2005 có giá trị null

  3. Hiệu suất XML của quy trình SQL:Chèn vào các cột trong bảng

  4. SQL Server REPLACE () so với TRANSLATE ():Sự khác biệt là gì?

  5. Cách thêm Đối tác chuyển đổi dự phòng vào chuỗi kết nối trong VB.NET