Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Index auf FK, auf die Wert-Spalte oder auf beide??? (https://www.delphipraxis.net/172313-index-auf-fk-auf-die-wert-spalte-oder-auf-beide.html)

romber 25. Dez 2012 22:18

Datenbank: MS SQL Server • Version: 2008 • Zugriff über: ADO, UniDAC

Index auf FK, auf die Wert-Spalte oder auf beide???
 
Hallo!

Zunächst einmal fröhliche Weihnachten und alles Beste an alle :-)

Ich habe in meiner Datenbank eine "Haupttabelle" und mehrere "Nebentabellen", die per FK mit der Haupttabelle verknüpft sind. Alles als Ganze betrachtet, handelt es sich bei den Tabellen um eine Art Filter. Über eine API bekomme ich sehr große Menge an Daten geliefert, die ich mithilfe dieses Filters auf bestimmte Kriterien prüfen möchte. Jeder gelieferter Datensatz muss durch diesen Filter durch und das mit höchstmöglichen Performance. Die Nebentabellen bestehen alle aus zwei Spalten. Eine Spalte enthält den FK und die andere den Wert für die Prüfung.

- Soll ich in jeder Nebentabelle einen Index auf FK setzten?
- Soll ich in jeder Nebentabelle einen Index auf die Wert-Spalte setzen?

Wie schon gesagt, mein Ziel ist die höchstmögliche Performance bei der Prüfung. Geschrieben wird in die Tabellen ganz selten, hier ist das Performance unwichtig.

Furtbichler 25. Dez 2012 22:41

AW: Index auf FK, auf die Wert-Spalte oder auf beide???
 
Wie wird gefiltert? Erst wenn man weiß, wie die Abfragen aussehen, kann man entsprechend optimieren.

Wenn die Tabellen sehr selten verändert werden, könnte ein Column-index interessant sein. Dann müssen diese Indexe aber vor jeder Änderung entfernt und anschließend wieder neu aufgebaut werden.

romber 25. Dez 2012 22:55

AW: Index auf FK, auf die Wert-Spalte oder auf beide???
 
Vielen Dank für die schnelle Reaktion!

Zitat:

Zitat von Furtbichler (Beitrag 1196705)
Wie wird gefiltert? Erst wenn man weiß, wie die Abfragen aussehen, kann man entsprechend optimieren.

Die Abfrage ist immer die selbe. Bei jedem Tabellenwert wird geprüft, ob es entweder Nil ist oder dem Wert des zu prüfenden Datesatzes entspricht.

Zitat:

Zitat von Furtbichler (Beitrag 1196705)
Wenn die Tabellen sehr selten verändert werden, könnte ein Column-index interessant sein.

So ist es. Nur auf welche Spalte? Auf den FK, auf den Wert oder auf beide?

Zitat:

Zitat von Furtbichler (Beitrag 1196705)
Dann müssen diese Indexe aber vor jeder Änderung entfernt und anschließend wieder neu aufgebaut werden.

Wenn and den Tabellen überhaupt was geändert wird, dann nur extrem selten. Daher soll das kein Problem sein.

Furtbichler 26. Dez 2012 09:56

AW: Index auf FK, auf die Wert-Spalte oder auf beide???
 
Zitat:

Zitat von romber (Beitrag 1196706)
Die Abfrage ist immer die selbe. Bei jedem Tabellenwert wird geprüft, ob es entweder Nil ist oder dem Wert des zu prüfenden Datesatzes entspricht.

Ein Index auf beide Spalten (Wert zuerst, dann FK) liefert Dir für die Abfrage schnellstmöglich ein Eregbnis
Code:
select FK
        from Nebentabelle
       where Wert=:WertAusTabelle
Um weitergehende Aussagen zu machen, benötige ich die konkrete Abfrage und Aufgabenstellung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz