AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Index setzen?

Ein Thema von Gruber_Hans_12345 · begonnen am 24. Nov 2016 · letzter Beitrag vom 29. Nov 2016
 
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#25

AW: Index setzen?

  Alt 29. Nov 2016, 06:53
@NicoDE/TE
Es gibt viele Fragen zu dem Thema, wie kann ich eine Indexverwendung erzwingen. Diese Fragen stellen sich zu Recht, wenn der Optimizer aus verschiedensten Gründen zu falschen Annahmen kommt. Dafür gibt es einerseits dann "Tricks", ich sag mal, um den Optimizer zu "übertölpeln" andererseits sogar Implementierungen mit spezielle Notation (meist herstellerspezifisch), denn die Hersteller wissen, dass es manchmal sinnvoll sein kann.

Wenn die Aufgabe aber lautet:
"Zähle alle Daten der Tabelle" (ohne Einschränkung/Where Clause/ Join Einschränkung) kommt der Optimizer zu Recht zu dem Schluss: Wenn ich eh alle Daten zählen muss, kann ich das auch "ganz bequem" von Anfang bis Ende mit einem (1!) Fulltablescan machen.
Der Zwang zum Index würde dazu führen, dass "die arme Engine" je Index Eintrag durch die Tabelle hüpfen muss, um am Ende zu dem überall mal hingesprungen zu sein und zu dem gleichen Ergebnis zu kommen, wie bei einem Fulltablescan ohne Index.

Dabei unberücksichtigt sind natürlich spezielle Indexverfahren oder aber auch die bereits gecachten Tabellenbestandteile. Letztere könnten dem Optimizer bspw. sagen, ich hab eh 90% der Daten im Cache, die 10% lade ich auch noch. Dann ist ein Fulltablescan (plus ggF. Sortierung) lediglich "Kopfrechnen" und sowieso vorzuziehen. Der Ausgang dieser Optimizerentscheidung wird wiederum von der Größe der Tabelle und der Cachegröße und der Häufigkeit der Verwendung der Tabelle abhängen.
Es gibt eine Fülle solcher Kriterien, die es oft schwierig machen, Optimizerentscheidungen nachzuvollziehen- auch sehr unterschiedlich je Produkt und Version.
Hier ist die Sache aber finde ich relativ klar.

Der Ansatz mit Trigger ist relativ naheliegend, auch wenn er noch ausgefeilt werden müsste. Wie mkinzler schon betont hat, der "Impakt" einer solchen Lösung dürfte auch bei relativ hoher Buchungsfrequenz bedeutend geringer ausfallen, als der Aufwand der hochfrequenten Fullscan-Abfragen.
Gruß, Jo
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 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