none
Select auf eine View dauert 3,5 Std. bis zur Ergebnissausgabe RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,

    1. Frage: ich habe eine View auf eine Änderungstabelle (CDC) erstellt. Die View führt eine Funktion aus und gibt mir die Netto-Änderungen wieder (fn_get_net-changes_Änderungsinstanz). Die  View sieht wie folgt aus:

    USE [TEST]
    GO

    /****** Object:  View [dbo].[CDC_TEST]    Script Date: 09/05/2011 09:25:56 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO


    CREATE VIEW [dbo].[CDC_TEST] AS

    SELECT * FROM cdc.fn_cdc_get_net_changes_dbo_TEST
      (sys.fn_cdc_get_min_lsn('dbo_TEST'),sys.fn_cdc_get_max_lsn(), N'all with merge')


    GO

    Eine Select-Abfrage auf diese View dauert 3,5 Std.!!! Die Test-Tabelle hat 305000 Datensätze, allerdings hat sie auch etwa 208 Spalten! Wie kann ich die Performanz dieser View verbessern?

    Ich nutze die View um in einem ETL-Tool (BusinessObjects) weitere Tabellen zu befüllen.

    Übrigens: ich habe eine andere Tabelle die etwa 10 Spalten hat, aber ebenfalls sehr lange braucht um die Abfrage auszuführen. Es gibt auch andere Tabellen, wo die View sehr schnell ausgeführt wird.

     

    2. Frage: die SELECT * der View gibt mir nicht alle Metadatenspalten zurück. Z.B. wird die „update_mask“ Spalte nicht zurückgegeben. Warum?

     

    Würde mich sehr freuen, wenn ich ein paar Tipps bzgl. der Performanz bekommen könnte...

    Vielen Dank im Voraus und beste Grüße,

    Abgoosht  

     

     

    Montag, 5. September 2011 07:42

Alle Antworten

  • Du hast zwar den Code des Views gepostet, nicht aber den interessanteren Teil

    SELECT * FROM cdc.fn_cdc_get_net_changes_dbo_TEST
      (sys.fn_cdc_get_min_lsn('dbo_TEST'),sys.fn_cdc_get_max_lsn(), N'all with merge')

    und die Tabellenstrukturen die dem zugrundeliegen.

    Auf Basis dieser Informationen lässt sich nichts wirklich Sinnvolles vorschlagen.


    -- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org
    Montag, 5. September 2011 08:02
  • Du hast zwar den Code des Views gepostet, nicht aber den interessanteren Teil

    SELECT * FROM cdc.fn_cdc_get_net_changes_dbo_TEST
      (sys.fn_cdc_get_min_lsn('dbo_TEST'),sys.fn_cdc_get_max_lsn(), N'all with merge')

    und die Tabellenstrukturen die dem zugrundeliegen.

    Auf Basis dieser Informationen lässt sich nichts wirklich Sinnvolles vorschlagen.


    -- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org


    Die Tabellenstruktur sieht wie folgt aus:

    1.)

           SELECT [__$start_lsn]
          ,[__$operation]
          ,[__$update_mask]
          ,[Knr]
          ,[Key]
          ,[AIdent]
          ,[tnr]
          ,[twert]
          ,[tkey]
          ,[Neu]
          ,[Wer]
          ,[Wann]
      FROM [TEST_SCHEMA].[dbo].[CDC_TEST]
    GO

    Die zweite Tabelle ist eine typische Kundestamm-Tabelle mit Name, PLZ, Telefon etc. (200 Spalten!)

    Die Funktion cdc.fn_cdc_get_net_changes_<capture_instance> siehe: http://msdn.microsoft.com/en-us/library/bb522511.aspx

    VG,

    Abgoosht

    Montag, 5. September 2011 08:19
  • Hi,

    Die zweite Tabelle ist eine typische Kundestamm-Tabelle mit Name, PLZ, Telefon etc. (200 Spalten!)


    Öhm. Eine "typische" Kundenstamm-Tabelle hat IMHO keine 200 Spalten. Es sei denn, ihr klatscht da alles (wie bspw. sämtliche Adressen, ...) in eine einzige Tabelle.

    An eurer Benennung solltet ihr ggfs. auch mal ein wenig feilen. Auch wenn das machbar ist, welchen Sinn sollten Spaltennamen wie ___$Irgendwas haben?

    Das gepostete SELECT Statement ist nicht die Tabellenstruktur. Lass dir doch mal ein CREATE Skript für die Tabelle erstellen (rechte Maustaste im SSMS auf die Tabelle, "Skript für Tabelle als ...")

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 5. September 2011 09:50
    Moderator
  • ****************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ****************************************************************************************************************
    Montag, 12. September 2011 15:07
    Moderator