Forum: Datenbanken
by idefix2,
20. Jun 2010
Es WUNDERT mich nicht allzusehr.
Wenn tabellenübergreifende Indizes oder berechnete Werte in Indizes möglich wären, würde es da kein Problem geben. Die Aufgabenstellung ist ja nicht wirklich sehr exotisch. Je mehr man sich bei der Datenbankdefinition der Normalform nähert, desto mehr Tabellen und damit Joins oder eben berechnete Spalten aus anderen Tabellen bekommt man. Wenn sich das so...
Forum: Datenbanken
by idefix2,
20. Jun 2010
Insgesant sind in der Tabelle ca 120000 Datensätze, die folgenden Queries liefern davon ca 55000
select * from musik
where (titel like '% %') and (Titel>'lo')
order by titel
select * from musik
where (titel like '% %') and (Titel>'lo')
order by titel,ip_name
ip_name ist jetzt ein berechnetes feld in der tabelle Musik, das ist immer noch um einiges schneller als ein joint der beiden...
Forum: Datenbanken
by idefix2,
19. Jun 2010
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...
Forum: Datenbanken
by idefix2,
19. Jun 2010
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.
Forum: Datenbanken
by idefix2,
19. Jun 2010
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
Forum: Datenbanken
by idefix2,
19. Jun 2010
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
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...
Forum: Datenbanken
by idefix2,
19. Jun 2010
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.