![]() |
Datenbank: Firebird • Version: 4 • Zugriff über: UniDAC
Firebird - Temporärer Index
Hallo zusammen,
weiß jemand ob es in Firebird die Möglichkeit gibt einen temporären Index zu verwenden. Also nur innerhalb einer stored procedure oder execute block? Ich habe eine stored procedure die deutlich schneller wäre wenn ich einen bestimmten Index hätte für ein paar Tabellen. Grundsätzlich ist dieser Index jedoch nicht wirklich nötig. |
AW: Firebird - Temporärer Index
Hast Du mal versucht einen View auf die Tabelle zu erzeugen und den benötigten Index auf diesen View zu setzen? Die stored procedure müßte dann auf den View zugreifen und nicht auf die Tabelle dahinter...
|
AW: Firebird - Temporärer Index
Wie kann man denn für eine View einen Index erstellen?
|
AW: Firebird - Temporärer Index
Wüsste nicht, dass das unter FireBird möglich ist.
|
AW: Firebird - Temporärer Index
Zitat:
Wenn Du eine SP ausführst, könntest Du dort: a) eine (temporäre) Tabelle anlegen, die b) bereits Daten zusammenführt / minimiert und dort c) anschließend selbst einen Index für erstellen. dann d) die eigentlichen Abfrage fahren e) die Tabelle aus a) und damit automatisch auch den Index löschen. In jedem Fall gilt, ein "temporärer" Index muss jedes Mal erstellt werden. Das kostet Zeit, die sich nur für sehr aufwändige Abfragen lohnen würde. |
AW: Firebird - Temporärer Index
Wie sieht es denn aus mit Index generell auf INACTIVE setzen und nur innerhalb der Procedure auf ACTIVE.
Kann das zu Problemen führen? |
AW: Firebird - Temporärer Index
Zitat:
![]() Zitat:
Bis bald... Thomas |
AW: Firebird - Temporärer Index
Die Tabelle in der die stored Procedure immer wieder sucht ist schon sehr groß ca. 1 Million Datensätze.
Problem ist nur das ich nicht den Primärschlüssel zum suchen verwenden kann. Die Procedure sucht im Schnitt so grob 100 Einträge in dieser großen Tabelle und das ist sehr langsam nicht indiziert. Ohne Index ca. 6 Sekunden Mit Index 32 ms Das Ding ist einfach nur das ich die Indices eigentlich nur für den Fall brauche und sonst eigentlich nicht. Die Infos zum Index aktivieren und deaktivieren habe ich bereits gelesen. Ich würde das aber gerne nur für die Connection oder Transaction machen. Nicht das ich den Index aktiviere und am Ende nicht wieder deaktivieren kann weil eine andere Connection den Index verwendet. Da weiß ich nicht wie sich das verhält und wollte wissen ob da evtl. jemand Erfahrung mit hat. |
AW: Firebird - Temporärer Index
Zitat:
Bis bald... Thomas |
AW: Firebird - Temporärer Index
Klar, könnte man zu Beginn in der SP einen INDEX erstellen und am Ende wieder löschen.
Wenn es knallt, wird es auch automatisch wieder zurückgerollt. (denk ich mal) Man könnte auch eine TempTable in der SP erstellen und füllen. Aber * ist das Erstellen des Index dann wirklich schneller, als der langsame Zugriff? * wäre es wirklich so schlimm, wenn der "nötige" Index immer bestehen bleibt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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 by Thomas Breitkreuz