Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Tabellenübergreifender Index (https://www.delphipraxis.net/152350-tabellenuebergreifender-index.html)

idefix2 19. Jun 2010 17:54

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.

fkerber 19. Jun 2010 18:10

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

idefix2 19. Jun 2010 19:04

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:
select titel, interpret.name from musik join interpret on musik.ip_id=interpret.id order by interpret.name, titel
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.
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.

mkinzler 19. Jun 2010 19:08

AW: Tabellenübergreifender Index
 
Du benötigst einen Index mit id und name

idefix2 19. Jun 2010 20:13

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

mkinzler 19. Jun 2010 20:15

AW: Tabellenübergreifender Index
 
Ich rede von den Feldern der Interpret-Tabelle.

idefix2 19. Jun 2010 22:00

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.

mkinzler 19. Jun 2010 22:08

AW: Tabellenübergreifender Index
 
ID, da es ein Fremdschlüssel ist und Nmae für die Einschränkung durch where

idefix2 19. Jun 2010 23:33

AW: Tabellenübergreifender Index
 
Code:
select titel, interpret.name from musik join interpret on musik.ip_id=interpret.id order by interpret.name, titel
Da ist kein where. Ich will alle Datensätze, aber sortiert. Die Sortierung soll sein: interpret.name, musik.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.

haentschman 20. Jun 2010 08:14

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 06:05 Uhr.
Seite 1 von 3  1 23      

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