Geeigneter Index für meine Tabelle

Hi,

Ich habe eine Tabelle in der ich die metrische Distanz meiner Knotenpunkte zu meine Sätzen speichere.
Die Tabelle sieht so aus:

ID INTEGER, distance1 REAL, distance2 REAL, distance3 REAL, distance4 REAL, ...

Die Wert der Distanz bewegt sich dabei zwischen 0 und 1 mit zurzeit 3 Nachkommastellen

Meine Query durchsucht die Spalten nun auf eine bestimmt Wertespanne:

SELECT id FROM distance
WHERE value BETWEEN (distance1 - radius) AND (distance1 + radius)
WHERE value BETWEEN (distance2 - radius) AND (distance2 + radius)
WHERE value BETWEEN (distance3 - radius) AND (distance3 + radius)
WHERE value BETWEEN (distance4 - radius) AND (distance4 + radius)
...

Wie kann ich diese Tabelle am besten indizieren?
Zur Zeit benutzt ich einen Seq Scan und das ist einfach unnötig, da schon die erste Bedingung der Query die Ergebnismenge stark einschränkt.

Vielen Dank für eure Hilfe

Jayni

ich würde die Tabelle folgendermassen aufbauen:

id; knoten; distance
1; 1; 0.877
1; 2; 0.126
...
2; 1; 0.873
2;2; 0.462
...

Indiziert würden dann ID, und knoten, ggf. auch zusammen. Da du viele Distanzen abfragst, kannst du auch das Distancefeld indizieren, das ginge sogar über einen Funktionalen Index, so das der Wert in der Tabelle gar nicht notwendig wäre.In deinem Modell könntest du nur effektiv nach der ID suchen und nicht den Distanzen, wo du für jede Distanz einen Index anlegen müsstest.

Gruß Uwe

Ich muss nach nichts anderen außer der ID suchen, da diese per Fremdschlüssel auf einen bestimmten Satz verweist.
Trotzdem wär auch dein Varschlag zum Tabellenaufbau eine Option.
Mit welchem Index Typ würdest du die Daten Indizieren, wenn es nur darum geht schnellst möglich die jeweiligen IDs zu bekommen?

Jayni

Wenn ich dein SQL richtig interpretiere durchsuchst du in den where-Bedingungen die ganzen distance-Spalten. Das geht auch besser mit Index. Verwenden tu ich eigentlich immer den default-Typ, btree AFAIR oder gist für Geometrien.

Gruß Uwe

Ich habs jetzt mit einem BTREE Index probiert auf jeder Distanz-spalte.
Die Perforamance ist 3 mal so hoch. Ich hatte gehofft es wär mehr. Mal sehen was ich noch optimieren kann.