Announcement

Collapse
No announcement yet.

Auf welche Felder Index setzen?

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

  • Auf welche Felder Index setzen?

    hallo,
    ich habe eine Tabelle deren Suche zum Teil zu einem timeout führt. Ich erhoffe mir durch einen oder mehrere Indexe dieses Problem zu umgehen. Auf welche Felder muss ich einen Index setzen? Gibt es da eine Regel?

    Auf alles was ich im Where-Teil durchsuche?

    Folgende Tabelle exisitiert:
    auftragID
    auftrag_bezeichnung
    auftrag_beschreibung
    auftrag_kundenID
    auftrag_datum
    auftrag_geloescht

    Ich suche stets mit:
    auftrag_bezeichnung
    auftrag_kundenID
    auftrag_geloescht = 0

  • #2
    Die Regel für Indizes lautet: So viel wie nötig, so wenig wie möglich.

    Du kannst den "Datenbankmodul-Ratgeber" darauf ansetzen und Dir einen passenden Index vorschlagen lassen.
    Ab Sql Server 2005 gibt es die DMV zu den MissingIndexes (dm_db_missing_index_xxx) die man "konsultieren" kann, um zu sehen, ob welche vermisst werden.

    Um jetzt zu sagen, welchen Index Du anlegen muss, müsste man die Verteilung der Daten wissen, mit welchen Werten etc. gesucht wird.
    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
      Und wenn du bei Textfeldern mit Upper(<FeldName>) suchst wird jeder Index ausgehebelt (Außer du hast ein DBMS die Upper-Indexe kann - AFAIK ist MS SQL da nicht dabei).

      Comment


      • #4
        Den Datenbankmodul-Ratgeber habe ich in der Workgroup-Edition leider nicht

        Lege ich einen Index auf ein Feld an oder auf Kombinationen von Feldern?

        Comment


        • #5
          auf ein Feld an oder auf Kombinationen von Feldern?
          Spielen wir Roulette? Dann auf eine Kombination, erhöht die Chancen.

          Nimm die betreffenden Abfragen und lass Dir den Ausführungsplan anzeigen; dann kannst Du schon mal sehen, wann wegen fehlenden Indizes Full-Tables Scans ausgeführt werden und Missing Indexes sollten auch angezeigt werden.
          http://olafhelper.over-blog.de/article-26251070.html
          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