Ich habe eine Tabelle, die rund 400 000 Datensätze enthält und die auf der Homepage der Intranet-Website aufgerufen wird. In Spitzenzeiten können wir 300-400 gleichzeitige Benutzer haben. Das SQL Profiler-Tool gibt die folgende Ausgabe.Verbesserung der SQL Server Abfrage Antwortzeit
- CPU: 406
- Liest: 32446
- Dauer: 397
ich die Felder in der 'wo' Klausel beteiligt indiziert. Gibt es eine Möglichkeit, die Reaktionszeit noch zu verbessern?
Was ist zu tun, um die Festplattenlesevorgänge zu reduzieren?
Serverkonfiguration: Windows 2003 64 Bit, SQL Server 2005 64 Bit SP2, .NET 2.0.
Die Abfrage- und Tabellendefinition wurde unten hinzugefügt. Es gibt noch 40 weitere Felder, die ich hier der Einfachheit halber nicht hinzugefügt habe. Die Felder, die meistens varchar sind, werden in der where-Klausel nicht verwendet. Sie sind nur da, um auf der Seite angezeigt zu werden. Es gibt einige Felder (5-6), die momentan nicht verwendet werden, aber ich habe sie in der Abfrage gelassen, weil sie später benötigt werden. Soll ich sie jetzt ausziehen? Würde das die Reaktionszeit verbessern?
Abfrage
SELECT
u.[PeopleKey],
u.[EnterpriseId],
u.[PersonnelNbr],
u.LastName,
u.FirstName,
u.MiddleName,
cc.WorkForceCd AS CareerCounselorWorkForceCd,
cc.WorkForceDesc AS CareerCounselorWorkForceDesc,
cc.WorkGroupCd AS CareerCounselorWorkGroupCd,
cc.WorkGroupDesc AS CareerCounselorWorkGroupDesc,
cc.CareerLevelCd As CareerCounselorCareerLevelCd,
cc.CareerLevelDesc AS CareerCounselorCareerLevel,
CL.NextLevelCD as nextCareerLevelCd
FROM
[User] u
LEFT JOIN [User] cc ON
u.[CareerCounselorPeopleKey] = cc.PersonnelNbr
Left JOIN [CareerLevel] CLON
u.WorkForceCd= CL.WorkForceCd AND
u.CareerLevelCd = CL.LevelCd
WHERE
u.PeopleKey = <integer>
[CareerLevel]
ID int 4 [Primary Key - clustered index]
Description varchar 150
WorkforceCd varchar 4
LevelCD varchar 10
NextLevelCD varchar 10
[Benutzer]
PeopleKey int 4 [Primary Key - clustered index]
EnterpriseId varchar 50 [non clustered index]
PersonnelNbr varchar 8 [non clustered index]
FirstName varchar 40
LastName varchar 40
MiddleName varchar 40
CareerCounselorPeopleKey int 4
CareerCounselorPersonnelNbr varchar 8
CareerCounselorName varchar 50
CapabilityCd varchar 5
CapabilityDesc varchar 25
WorkforceCd varchar 4
WorkForceDesc varchar 40
WorkGroupCd varchar 4
WorkGroupDesc varchar 50
CareerLevelCd varchar 10
CareerLevelDesc varchar 50
indiziert werden schreiben Sie Ihre Tabellendefinition und die SQL-Abfrage –
vereinbart, dass sehr hilfreich wäre. –
wow :) danke Jungs, Ihre Antworten selbst haben mir viel zu denken gegeben. Ich werde die Tabellendefinition und die Abfrage innerhalb der nächsten paar Minuten veröffentlichen. – user20358