Announcement

Collapse
No announcement yet.

SchemaCompare

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SchemaCompare

    Hallo liebes Forum,

    ich habe gerade, zum Vergleich zweier Datenbanken, das SchemaCompare-Tool vom Visual Studio 2008 ausgeführt.
    Das daraus erstellte UpdateScript enthält unter anderem auch die folgende Anweisung:
    [highlight=sql]
    CREATE NONCLUSTERED INDEX [_dta_index_MyTable_7_1978490127__K1_K22_2_3_4_5_6_ 7_8_9_10_11_12_13_14_15_16_17_18_19_20_23_24_25_26 _27_28_29_30_31_32]
    ON [dbo].[MyTable] ([MyTableId], [PartitionKey])
    INCLUDE (hier stehen die 32 wichtigsten Spalten) ON [MyFilegroup]
    [/highlight]

    Dieser Index hat natürlich so gut wie keinen Sinn und es ist auch kein richtiger Index sondern ein hypothetischer. Soweit ich weiß enthalten hypothetische Indizes nur Statistikinformationen über die angegebenen Spalten und kann nicht als richtiger Index verwendet werden (= nur für den Queryoptimizer brauchbar)
    Der "Index" ist im ManagementStudio natürlich auch unter Statistics eingeordnet.

    Meine Frage ist nun: Habe ich etwas falsch über hypothetische Indizes verstanden oder ist das eigentlich ein "Fehler" vom VS?

    Danke und lg chapster

  • #2
    Hallo chapster,

    neine, hierbei handelt es sich wirklich um einen "richtig" Index und der Bezeichnung nach, wurde der mal über den dta = Database Tuning Advisor angelegt.

    Was Du meinst sind die Statistiken, die werden mit CREATE STATISTICS angelegt.
    Zu jedem Index wird aber immer eine Verteilungsstatistik angelegt.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Danke für die rasche Antwort!

      Stimmt, er wurde durch den DTA angelegt, allerdings habe ich mir zusätzlich noch die ganze Tabelle inkl. Indizes, Statistics, etc. vom DB-Script-Wizard generieren lassen und für den genannten "Index" folgende Zeile erhalten:
      [highlight=sql]UPDATE STATISTICS [dbo].[MyTable]([_dta_index_MyTable_7_1978490127__K1_K22_2_3_4_5_6_ 7_8_9_10_11_12_13_14_15_16_17_18_19_20_23_24_25_26 _27_28_29_30_31_32])
      WITH STATS_STREAM = 0x010000000...(ewig langer HEX), ROWCOUNT = 0, PAGECOUNT = 0[/highlight]

      Kein CREATE NONCLUSTERED ... wie beim SchemaCompare!
      Außerdem stellt sich mir die Frage warum der "Index" unter Statistics angezeigt wird wenn es doch ein richtiger sein soll?
      Es gibt nämlich auch einen einzigen Eintrag unter Indexes der vom DTA angelegt wurde und dieser wurde auch durch den Script-Wizard erstellt.

      Danke nochmal und
      lg chapster

      Comment


      • #4
        Das ist nur der Update Befehl für die Statistik.
        Die Statistik wird automatisch mit dem Index angelegt; den solltest Du in SSMS unter den Indizes der Tabelle finden.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Das ist ja das Problem,
          den "Index" gibt es unter Indizes nicht!
          Deswegen auch meine Annahme, dass es kein richtiger Index ist sondern nur eine Statistik.

          Wie hier unter is_hypothetical sehr wage beschrieben.

          danke
          lg chapster

          Comment


          • #6
            Ich bin überrascht, der DTA macht das wirklich, "hypotetische Objekte" anzulegen, wohl um besser die Auswirkungen analysieren zu können.
            http://msdn.microsoft.com/en-us/library/ms190172.aspx
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment

            Working...
            X