sql >> Databasteknik >  >> RDS >> Sqlserver

Är det långsammare att fråga efter vyer än att göra en fråga?

Även om saker och ting kommer att vara desamma i ditt enkla exempel är viss försiktighet nödvändig med att använda kapslade vyer.

Jag arbetade på ett system där frågorna tog timeout efter 30 sekunder byggt på cirka 6 nivåer av kapslade vyer och lyckades snabba upp dessa med en faktor på cirka 100 genom att skriva om frågorna mot bastabellerna.

Ett enkelt exempel på vilken typ av problem som kan uppstå finns nedan.

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. Hur genererar man en UUIDv4 i MySQL?

  2. långsam mysql-fråga som måste köras hundratusentals gånger per timme

  3. JDBC Tunn anslutningssträng i Oracle använder både kolon och snedstreck

  4. Är det möjligt att uppgradera MySQL i MAMP till MySQL 5.7?