Meine Firma hat eine Ansicht, die wir einige Berichte durchfüttern. Ich wurde mit dem Problem konfrontiert, dass es von einem der Manager, der den Bericht verwendet, ausging. Nach einigen Untersuchungen fand ich heraus, dass es 5 Minuten dauerte, um 93.000 Datensätze aus der gespeicherten Prozedur zurückzugeben, und 3 Minuten, um 68.000 Datensätze zurückzugeben, die eine SELECT-Anweisung aus der Sicht mit 1 WHERE-Klausel hinzufügten (für die Jahrespezifikation).Langsame Ergebnisse von Ansicht Abfrage
Nach dem Ausführen der Auswahl mit dem Ausführungsplan ging ich von 3 Minuten auf 16 Sekunden auf den 68.000 Datensätze, indem Sie einen Index, der fehlte. Ist immer noch viel zu langsam für mich in Ordnung zu sein, da dies nicht mehr als eine Sekunde oder 2 dauern sollte.
Ausführungsplan hat 84% Kosten in meinem Clustered-Index-Scan. Ich habe hier eine andere Frage gestellt und gefragt, wie sie das reduzieren und die Lösung ausprobieren können, aber das hatte keine Auswirkungen für mich. Ich bin kein DBA, sondern ein asp.net-Entwickler, daher kenne ich die kleinen Details der Indizierung und Optimierung nicht.
Die Abfrage wird dabei eine Auswahl nicht * als andere vorgeschlagen haben nicht, wie unten zu tun gesehen:
SELECT
[Customer_Type]
,[Customer]
,[Unit_Number]
,[Cert_Number]
,[Effective_Date]
,[Expiration_Date]
,[Coverage]
,[CoveragePercentThefts]
,[Amount]
,[Facility_Name]
,[Facility_Policy_Number]
,[Accounting_Period]
,[Entry_Date]
,[Entry_Month]
,[Entry_Year]
,[FTD]
,[Month_FTD]
,[Year_FTD]
,[Entry_By]
,[Net_payment]
,[transaction_code]
,[Facility_Address]
,[Facility_City]
,[Facility_State]
,[Full_Name]
,[CalculatedNet]
,[PctTenantsInsured]
FROM
[Policy_Tracking].[dbo].[vw_Facility_Detail_Report_V4]
WHERE
Year_FTD = '2016'
würde jemand Geist mir dies helfen, erhalten eine bessere Zahl nach unten? Ich schätze die Hilfe.
EDIT:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[vw_Facility_Detail_Report_V4]
AS
SELECT
dbo.Customer_Types.Customer_Type,
CASE
WHEN Customer_Types.Customer_Type = 'I'
THEN CUSTOMERS.First_Name + ' ' + CUSTOMERS.Last_Name
WHEN Customer_Types.Customer_Type = 'O'
AND CUSTOMERS.Organization_Name > ''
THEN CUSTOMERS.Organization_Name
ELSE CUSTOMERS.First_Name + ' ' + CUSTOMERS.Last_Name
END AS Customer,
dbo.POLICYS.Unit_Number, dbo.POLICYS.Cert_Number,
dbo.POLICYS.Effective_Date, dbo.POLICYS.Expiration_Date,
dbo.Coverages.Coverage, dbo.CoveragePercentThefts.Description AS CoveragePercentThefts,
dbo.PAYMENTS_Transactions.Amount, dbo.FACILITYS.Facility_Name,
dbo.FACILITYS.Facility_Policy_Number,
dbo.PAYMENTS_Transactions.Accounting_Period,
dbo.PAYMENTS_Transactions.Mod_Date AS Entry_Date,
MONTH(dbo.PAYMENTS_Transactions.Mod_Date) AS Entry_Month,
YEAR(dbo.PAYMENTS_Transactions.Mod_Date) AS Entry_Year,
dbo.PAYMENTS_Transactions.Transaction_Date AS FTD,
MONTH(dbo.PAYMENTS_Transactions.Transaction_Date) AS Month_FTD,
YEAR(dbo.PAYMENTS_Transactions.Transaction_Date) AS Year_FTD,
dbo.PAYMENTS_Transactions.Mod_ID AS Entry_By,
dbo.siteLink_Statement.dcNetPayment AS Net_payment,
dbo.PAYMENTS_Transactions.Payment_Tran_Code_ID AS transaction_code,
dbo.FACILITYS.Address AS Facility_Address,
dbo.FACILITYS.City AS Facility_City, dbo.FACILITYS.State AS Facility_State,
dbo.CUSTOMERS.Full_Name,
dbo.PAYMENTS_Transactions.Amount - dbo.FACILITYS.Commission_Rate * .01 * dbo.PAYMENTS_Transactions.Amount AS CalculatedNet,
dbo.siteLink_Statement.dcPctTenantsInsured AS PctTenantsInsured
FROM
dbo.Customer_Types
RIGHT OUTER JOIN
dbo.CUSTOMERS ON dbo.Customer_Types.ID = dbo.CUSTOMERS.Customer_Type_ID
RIGHT OUTER JOIN
dbo.Policy_Facility_Customer
INNER JOIN
dbo.POLICYS ON dbo.Policy_Facility_Customer.Cert_Number = dbo.POLICYS.Cert_Number
INNER JOIN
dbo.FACILITYS ON dbo.POLICYS.Facility_Policy_Number = dbo.FACILITYS.Facility_Policy_Number
AND dbo.Policy_Facility_Customer.Facility_ID = dbo.FACILITYS.ID
LEFT OUTER JOIN
dbo.Coverages ON dbo.POLICYS.Coverage_ID = dbo.Coverages.ID
LEFT OUTER JOIN
dbo.CoveragePercentThefts ON dbo.POLICYS.Coverage_Percent_Theft_ID = dbo.CoveragePercentThefts.ID
ON dbo.CUSTOMERS.ID = dbo.Policy_Facility_Customer.Customer_ID
RIGHT OUTER JOIN
dbo.PAYMENTS_Transactions ON dbo.POLICYS.Cert_Number = dbo.PAYMENTS_Transactions.Cert_Number
LEFT OUTER JOIN
dbo.siteLink_Statement ON dbo.FACILITYS.Facility_Policy_Number = dbo.siteLink_Statement.SSFNumber
AND MONTH(dbo.PAYMENTS_Transactions.Accounting_Period) = MONTH(DATEADD(m, - 1, dbo.siteLink_Statement.zCreationDate))
AND YEAR(dbo.PAYMENTS_Transactions.Accounting_Period) = YEAR(DATEADD(m, - 1, dbo.siteLink_Statement.zCreationDate))
GO
EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane1', @value=N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00]
Begin DesignProperties =
Begin PaneConfigurations =
Begin PaneConfiguration = 0
NumPanes = 4
Configuration = "(H (1[40] 4[20] 2[20] 3))"
End
Begin PaneConfiguration = 1
NumPanes = 3
Configuration = "(H (1[34] 4[49] 3))"
End
Begin PaneConfiguration = 2
NumPanes = 3
Configuration = "(H (1[50] 2[25] 3))"
End
Begin PaneConfiguration = 3
NumPanes = 3
Configuration = "(H (4 [30] 2 [40] 3))"
End
Begin PaneConfiguration = 4
NumPanes = 2
Configuration = "(H (1[56] 3))"
End
Begin PaneConfiguration = 5
NumPanes = 2
Configuration = "(H (2 [66] 3))"
End
Begin PaneConfiguration = 6
NumPanes = 2
Configuration = "(H (4 [50] 3))"
End
Begin PaneConfiguration = 7
NumPanes = 1
Configuration = "(V (3))"
End
Begin PaneConfiguration = 8
NumPanes = 3
Configuration = "(H (1[15] 4[76] 2))"
End
Begin PaneConfiguration = 9
NumPanes = 2
Configuration = "(H (1[28] 4))"
End
Begin PaneConfiguration = 10
NumPanes = 2
Configuration = "(H (1[66] 2))"
End
Begin PaneConfiguration = 11
NumPanes = 2
Configuration = "(H (4 [60] 2))"
End
Begin PaneConfiguration = 12
NumPanes = 1
Configuration = "(H (1))"
End
Begin PaneConfiguration = 13
NumPanes = 1
Configuration = "(V (4))"
End
Begin PaneConfiguration = 14
NumPanes = 1
Configuration = "(V (2))"
End
ActivePaneConfig = 0
End
Begin DiagramPane =
Begin Origin =
Top = -100
Left = 0
End
Begin Tables =
Begin Table = "Customer_Types"
Begin Extent =
Top = 20
Left = 680
Bottom = 128
Right = 836
End
DisplayFlags = 280
TopColumn = 0
End
Begin Table = "CUSTOMERS"
Begin Extent =
Top = 20
Left = 446
Bottom = 128
Right = 620
End
DisplayFlags = 280
TopColumn = 6
End
Begin Table = "Policy_Facility_Customer"
Begin Extent =
Top = 22
Left = 40
Bottom = 130
Right = 191
End
DisplayFlags = 280
TopColumn = 0
End
Begin Table = "POLICYS"
Begin Extent =
Top = 38
Left = 387
Bottom = 146
Right = 606
End
DisplayFlags = 280
TopColumn = 0
End
Begin Table = "FACILITYS"
Begin Extent =
Top = 188
Left = 164
Bottom = 296
Right = 353
End
DisplayFlags = 280
TopColumn = 0
End
Begin Table = "Coverages"
Begin Extent =
Top = 155
Left = 639
Bottom = 263
Right = 790
End
DisplayFlags = 280
TopColumn = 0
End
Begin Table = "CoveragePercentThefts"
Begin Extent =
Top = 330
Left = 38
Bottom = 438
Right = 240
' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'vw_Facility_Detail_Report_V4'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPane2', @value=N' End
DisplayFlags = 280
TopColumn = 0
End
Begin Table = "PAYMENTS_Transactions"
Begin Extent =
Top = 432
Left = 484
Bottom = 540
Right = 682
End
DisplayFlags = 280
TopColumn = 0
End
Begin Table = "siteLink_Statement"
Begin Extent =
Top = 240
Left = 1076
Bottom = 369
Right = 1276
End
DisplayFlags = 280
TopColumn = 0
End
End
End
Begin SQLPane =
End
Begin DataPane =
Begin ParameterDefaults = ""
End
Begin ColumnWidths = 20
Width = 284
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
Width = 1500
End
End
Begin CriteriaPane =
Begin ColumnWidths = 11
Column = 19890
Alias = 1410
Table = 1500
Output = 720
Append = 1400
NewValue = 1170
SortType = 1350
SortOrder = 1410
GroupBy = 1350
Filter = 1350
Or = 1350
Or = 1350
Or = 1350
End
End
End
' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'vw_Facility_Detail_Report_V4'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=2 , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'VIEW',@level1name=N'vw_Facility_Detail_Report_V4'
GO
Diese Ansicht ist ziemlich einfach. Kein Zweifel, das eigentliche Leistungsproblem liegt in 'vw_Facility_Detail_Report_V4'. –
@GordonLinoff danke für Ihre schnelle Antwort. Was oder wo schlägst du vor, ich schaue in die Ansicht? – ggiaquin16
Die Angabe der Definition von vw_Facility_Detail_Report_V4 würde helfen, ebenso wie der Ausführungsplan. – ZeroUltimax