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

Apakah kueri pada tampilan lebih lambat daripada melakukan satu kueri?

Sementara dalam contoh sederhana Anda, semuanya akan sama, beberapa kehati-hatian diperlukan dengan menggunakan tampilan bersarang.

Saya bekerja pada sistem di mana waktu kueri habis setelah 30 detik dibangun pada sekitar 6 tingkat tampilan bersarang dan berhasil mempercepatnya dengan faktor sekitar 100 dengan menulis ulang kueri terhadap tabel dasar.

Contoh sederhana dari jenis masalah yang dapat muncul di bawah ini.

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. Tidak dapat menemukan basis data pertama kode EF saya

  2. C# mengimpor file excel ke sql database error

  3. Sql Server - Hindari kompilasi yang ditangguhkan

  4. membeli film lebih awal dari tanggal Gladiator SQL SERVER

  5. Hanya menggunakan IP untuk terhubung ke SQL Server 2008 tanpa nama instance?