![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: egal
Tabellenübergreifender Index
Ich würde gerne wissen, ob es irgendwie möglich ist, in Firebird einen Index anzulegen, der aus Spalten in mehreren Tabellen besteht, um eine Abfrage zu beschleunigen, die ein join aus diesen Tabellen sortiert anzeigen soll. Ich suche jetzt schon eine ganze Weile in der Firebird Dokumentation, aber ich finde nichts dazu.
|
AW: Tabellenübergreifender Index
Hi!
Warum sollte das ein Index sein? Es sollte ja eher auf jeder der beiden Spalten ein Index liegen, oder? Liebe Grüße, Frederic |
AW: Tabellenübergreifender Index
Tabelle Musik - Felder Titel und IP_ID
Tabelle Interpret - Felder id und Name Ich habe zwar die Tabelle Interpret auch nach dem namen indexiert, aber ein
Code:
scheint den zweiten Index nicht wirklich zu verwenden - zumindest wird das Zeug extrem langsam und im Plan, den die Database Workbench anzeigt, kommt der Index nicht vor.
select titel, interpret.name from musik join interpret on musik.ip_id=interpret.id order by interpret.name, titel
Ich habe jetzt versucht, das über ein berechnetes Feld in der Tabelle Musik zu lösen, aber auch berechnete Felder werden im Index nicht zugelassen. |
AW: Tabellenübergreifender Index
Du benötigst einen Index mit id und name
|
AW: Tabellenübergreifender Index
meinst Du interpret.id, interpret.name.
Was sollte das für einen Sinn haben? Id ist eindeutig, und Name würde an der sortierung dieses Index nichts ändern |
AW: Tabellenübergreifender Index
Ich rede von den Feldern der Interpret-Tabelle.
|
AW: Tabellenübergreifender Index
ok, und was erreiche ich mit einem Index Interpret.id, Interpret.name?
Id ist ein eindeutiger Wert in der tabelle Interpret. Zwei Felder bei einem Index anzugeben, hat, so viel ich weiss, nur Sinn, wenn das erste Feld allein die Datensätze nicht eindeutig identifiziert. Dann dient das zweite Feld zur Sortierung der Ergebniszeilen in jeder Gruppe, in der das erste Feld gleiche Werte hat. |
AW: Tabellenübergreifender Index
ID, da es ein Fremdschlüssel ist und Nmae für die Einschränkung durch where
|
AW: Tabellenübergreifender Index
Code:
Da ist kein where. Ich will alle Datensätze, aber sortiert. Die Sortierung soll sein: interpret.name, musik.titel
select titel, interpret.name from musik join interpret on musik.ip_id=interpret.id order by interpret.name, titel
Ein Index für interpret.id ist natürlich für den join wichtig. Aber id ist ohnehin primary key in der Tabelle Interpret, also gibt es den Index schon. Für das Sortieren nach Name würde ein Index id,name überhaupt nichts beschleunigen, weil er ja in 1. Linie nach id sortieren würde, und nur innerhalb gleicher id nach Name, wenn id nicht eindeutig wäre. |
AW: Tabellenübergreifender Index
Guten Morgen...
nur mal so am Rande. Was für einen Geschwindigkeitsvorteil erhoffst du dir ? Um wieviele Datensätze handelt es sich denn ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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