probleme mit index

Hallo, informiere micht jetzt schon länger über das sql-modul bei postgres und bin interessiert daran.
Ein Thema, das dabei die größte Rolle für mich spielt ist das indexing auf xpath ausdrücken, sodass eine performante Suche über Xml Objekte möglich ist. Ich habe diesen Thread gefunden, aber leider gibt es dazu noch keine
Antwort.


Kann von euch jemand helfen?

danke

Ich verstehe nicht ganz, warum Du das in PL/pgSQL postest, aber die Antwort ist eigentlich ganz einfach:

CREATE INDEX index_foo 
  ON xmlobjects(xpath_string(xml_src::text, '/xmlobject/marks/text()'));

Also einfach den XPath Ausdruck für den Index verwenden, den Du auch für die Abfrage verwenden würdest.

Danke für die Schnelle Antwort… :smiley:

Und wenn ich, wie im Thread beschrieben, nach mehreren Attributen gleichzeitig suchen möchte, kreiere ich einen Index über alle?

Oder einen für jedes Attribut, das hängt von Deinen Daten und den Abfragen ab. Fag mal mit einem Index auf dem Kriterium an welches am selektivsten ist und prüfe den Execution Plan. Eventuell reicht das dann schon um das performant zu machen - aber das kann wirklich nur der Execution Plan beantworten.

ok, super hilft mir weiter. eine kleinigkeit noch:

angenommen ich habe zwei verschiedene arten von xmlstrukturen in denen der gleiche tag vorkommt, nur in einer anderen Tiefe z.B Category


<Struct_One>
<Name>Struct 1</Name>
<Category>5.0</Category>
</Struct_One>

<Struct_Two>
<Name>6.5</Name>
<Deeper>
<Category>9.0</Category>
</Deeper>
</Struct_Two>

dann gibts ja den xpath-ausdruck (xpath(’/*/category… .
Über den kann ich dann ja auch einen Index legen, oder?
Und die Performance wird durch die verschiedenen Tiefen nicht beeinflusst, weil der Index ja beim inserting erzeugt wird? Liege ich richtig?

danke