Search Postgresql Archives

Re: XML Index again

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alban

Thanks for your help, your suggestion worked.

I need another xpath _expression_ to find any Attribute with  Name ="xxxx" under the Attributes node. (not just if it is in a specific position)
see   query below.
How do I create an index for this xpath _expression_ ?

Thanks
Chris 


 SELECT * FROM time_series 
        WHERE array_upper((xpath('/AttributeList/Attributes/Attribute[Name="xxxxx"]',   external_attributes)),1) > 0  


On Sun, Mar 7, 2010 at 1:11 PM, Alban Hertroys <dalroi@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
On 7 Mar 2010, at 11:02, Chris Roffler wrote:

> I still have some problems with my xml index
>
> CREATE INDEX xml_index
>   ON time_series
>   USING btree
>   ((
>   (xpath('/AttributeList/Attributes/Attribute/Name/text()', external_attributes))[1]::text));
>
> When I run the following query the index is not used :
>
> select id from time_series where
> array_upper(
> (xpath('/AttributeList/Attributes/Attribute[Name="Attribute122021"]', external_attributes))
> , 1) > 0
>
> Any Idea on how to configure the index ?

There are a couple of cases where Postgres won't use your index, but in this case it's quite clearly because you're asking for (quite) a different _expression_ than the one you indexed.

You seem to want to test for the existence of nodes with a specific name, maybe this is what you're looking for?:

SELECT id FROM time_series t1 WHERE EXISTS (
       SELECT 1
         FROM time_series t2
        WHERE (xpath('/AttributeList/Attributes/Attribute/Name/text()', external_attributes))[1]::text = ('Attribute122021', external_attributes)
          AND t2.id = t1.id
);

It's just a guess at what you're trying to do, so I may very well have gotten it wrong. The important part is that you need to use the _expression_ you indexed in your where clause, or the database has no idea you mean something similar as to what you indexed.

Alban Hertroys

--
If you can't see the forest for the trees,
cut the trees and you'll see there is no forest.


!DSPAM:1034,4b9389d6296921789322580!




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux