Update dauert sehr lange

sbraun71

Neuer Benutzer
Beiträge
1
Guten Abend,

ich betreue eine ältere Perl-Anwendung, die über ODBC auf einen MSSQL-Server 2012 zugreift.
Sie hat einen PK und einen Index, der speziell auf den Update passt:

Tabelle:
CREATE TABLE [dbo].[Abo_Kunde](
[KundenID] [int] NOT NULL,
[g_von] [datetime] NULL,
[g_bis] [datetime] NULL,
[AboID] [int] NULL,
[MutDatum] [datetime] NULL,
[MutUser] [int] NULL,
[ID] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Abo_Kunde] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Index:
CREATE NONCLUSTERED INDEX [Abo_Kunde_KundenID_gbis] ON [dbo].[Abo_Kunde]
(
[KundenID] ASC,
[g_bis] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

Wenn ich nun die Abfrage

UPDATE [abo2006].[dbo].Abo_Kunde SET g_bis = GETDATE(), MutDatum = GETDATE(), MutUser = 15 WHERE (KundenID = 458134) AND (g_bis IS NULL)
ausführe, dauert diese mehrere Minuten, aber schlussendlich wird der Datensatz korrekt upgedated.

Auch das zurücksetzen mit
UPDATE [abo2006].[dbo].Abo_Kunde SET g_bis =null, MutDatum = GETDATE(), MutUser = null WHERE (KundenID = 458134) AND id = 1159336
dauert gleich lang, funktioniert aber auch.

Hat jemand einen Tipp, wie ich das Problem analysieren kann?

Vielen Dank und Grüsse

Stefan
 
Werbung:
Wieviele Datensätze hat denn die Tabelle und wieviele sind von dem Update betroffen?

Führst du das Update über ODBC oder im SQL Management Studio aus? Wenn ersteres, bitte mal vergleichen.

Ansnsonsten sehe ich hier auch noch kein Problem. In letzter Konsequenz müsste man aber auch gucken was die Hardware macht.
 
Werbung:
UPDATE [abo2006].[dbo].Abo_Kunde SET g_bis = GETDATE(), MutDatum = GETDATE(), MutUser = 15 WHERE (KundenID = 458134) AND (g_bis IS NULL)

Aufgrund der KundenID Festlegung würde ich behaupten, dass nicht besonders viele Datensätze geupdatet werden. Dafür müsste man aber mal die Tabelle im Aufbau sehen. Sinds wirklich nur wenige?

Ich könnte mir evtl. auch vorstellen, dass das GETDATE() langsam zu heftig wird für die Maschine, auf der die Datenbank liegt, wenn es wirklich Low Hardware ist. Aber ansonsten sehe ich auch erstmal keinen Grund.
 
Zurück
Oben