Tarabas (Manuel Rorarius) wrote:
> Hi Tom,
>
> TL> As already noted, it might be worth your while to add an index using the
> TL> pattern-ops opclass to help with queries like this.
>
> I have done that now and it works very fine as supposed.
>
> The problem with the high startup_costs disappeared somehow after the
> change of the enable_seqscan = off and a restart of pg-admin.
I'm not sure restarting pgAdmin would have had any effect.
> first Time I ran the statement it showed 13 sec execution time.
>
> Seq Scan on image image0_ (cost=0.00..21414.21 rows=11 width=1311)
> (actual time=10504.138..12857.127 rows=119 loops=1)
> Filter: ((title)::text ~~ '%Davorka%'::text)
> Total runtime: 12857.372 ms
>
> second time I ran the statement it dropped to ~500 msec , which is
> pretty ok. :-)
This will be because all the data is cached in the server's memory.
> Seq Scan on image image0_ (cost=0.00..21414.21 rows=11 width=1311)
> (actual time=270.289..552.144 rows=119 loops=1)
> Filter: ((title)::text ~~ '%Davorka%'::text)
> Total runtime: 552.708 ms
As you can see, the plan is still scanning all the rows. In any case,
you've changed the query - this has % at the beginning and end, which no
index will help you with.
--
Richard Huxton
Archonet Ltd