Vorherige Frage: SQL Server ändert den Ausführungsplan
Wir verwenden SQL Server 2014 Developer Edition.
SQL Server ändert den Ausführungsplan für identische Abfragen und dieselbe Datenbank und denselben SQL Server (ich habe dies mehrmals überprüft).
Wenn ich von meinem Entwicklungscomputer mit AD-Konto aus eine Verbindung zu Management Studio herstelle, dauert es 18 Sekunden, um die Abfrage abzuschließen (meistens). Wenn ich eine Remoteverbindung zum Server herstelle und die Abfrage in Management Studio ausführe, dauert der Abschluss 2 Sekunden. Auf dem Computer meines Kollegen dauert es mit Management Studio 2 Sekunden und mit Management Studio 18 Sekunden, wenn er eine Verbindung mit der MVC-Anwendung (Ado.Net) herstellt.
Dinge, die wir getan haben
- Starten Sie SQL Server neu
- DBCC FREEPROCCACHE
- sp_updatestats
- Versuchen Sie es mit verschiedenen Benutzern AD- und SQL-Benutzer
Langsamer Ausführungsplan
Schneller Ausführungsplan
Abfrage
SET ANSI_NULLS ON
GO
SET ANSI_PADDING ON
GO
SET ANSI_WARNINGS ON
GO
SET ARITHABORT ON
GO
SET CONCAT_NULL_YIELDS_NULL ON
GO
SET NUMERIC_ROUNDABORT OFF
GO
SET QUOTED_IDENTIFIER ON
GO
DECLARE @ccode varchar(500)
DECLARE @PageSize int
DECLARE @PageNumber int
SET @ccode = '%skd%'
SET @PageSize = 20
SET @PageNumber = 1
SELECT DISTINCT CLASSIFICATIONS.ABBREV_TEXT,
CLASSIFICATIONS.TITLE_TEXT,
CLASSIFICATIONS.CFN_UID
FROM klasje.dbo.CLASSIFICATIONS
inner join Klasje.dbo.CFN_VERSIONS on CLASSIFICATIONS.CFN_UID = CFN_VERSIONS.CFN_UID
inner join Klasje.dbo.VERSION_CATEGORY_XREFS on CFN_VERSIONS.CVN_UID = VERSION_CATEGORY_XREFS.CVN_UID
left outer join Klasje.dbo.VELJAVNOST on CFN_VERSIONS.LIFE_CYCLE_CODE = VELJAVNOST.RV_LOW_VALUE
WHERE CATEGORY_CODE like @ccode OR DESCRIPTOR_TEXT like @ccode OR DEFINITION_TEXT like @ccode
ORDER BY ABBREV_TEXT
OFFSET @PageSize * (@PageNumber - 1) ROWS FETCH NEXT @PageSize ROWS ONLY
Beide Ausführungspläne im Kern .
SELECT @@OPTIONS
gibt in beiden Fällen 5496 zurück (langsam und schnell).