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
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