Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Update dauert sehr lange

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von sbraun71, 13 November 2013.

  1. sbraun71

    sbraun71 Neuer Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
  3. gurbelunder

    gurbelunder Datenbank-Guru

    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.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden