| From: | "Christopher Kings-Lynne" <chriskl(at)familyhealth(dot)com(dot)au> | 
|---|---|
| To: | "Hackers" <pgsql-hackers(at)postgresql(dot)org> | 
| Cc: | <pgsql-general(at)postgresql(dot)org>, <pgsql-sql(at)postgresql(dot)org> | 
| Subject: | tsearch vs. fulltextindex | 
| Date: | 2002-08-14 04:37:56 | 
| Message-ID: | GNELIHDDFBOCMGBFGEFOIELACDAA.chriskl@familyhealth.com.au | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general pgsql-hackers pgsql-sql | 
Hi,
I've just done some performance comparisons between contrib/fulltextindex
and contrib/tsearch.  Even with every optimisation I can think of for
fulltextindex, tsearch is 300 times faster ;)
Plus it doesn't require a separate table or complicated queries.
I think we should strongly encourage people to use tsearch instead of
fulltextindex.  I hope to commit some change to fulltextindex in the near
future, so I'll add a note to the readme then.
Chris
eg:
australia=# explain analyse select food_id, category_id, description from
test_foods where not pending and fulltextidx ## 'baskin&fruit';
NOTICE:  QUERY PLAN:
Index Scan using fulltextidx_idx on test_foods  (cost=0.00..45.93 rows=11
width=40) (actual time=0.22..1.53 rows=8 loops=1)
Total runtime: 1.70 msec
EXPLAIN
australia=# explain analyze SELECT distinct(f.food_id), f.category_id,
f.description, f.brand FROM food_foods f, food_foods_fti f0, food_foods_fti
f1 WHERE NOT f.pending AND f0.id=f.oid AND f0.string ~ '^baskin' AND
f1.id=f.oid AND f1.string ~ '^fruit';
NOTICE:  QUERY PLAN:
Unique  (cost=12.10..12.11 rows=1 width=66) (actual time=532.11..532.25
rows=8 loops=1)
  ->  Sort  (cost=12.10..12.10 rows=1 width=66) (actual time=532.10..532.14
rows=8 loops=1)
        ->  Nested Loop  (cost=0.00..12.09 rows=1 width=66) (actual
time=292.41..531.89 rows=8 loops=1)
              ->  Nested Loop  (cost=0.00..6.07 rows=1 width=8) (actual
time=292.35..531.35 rows=8 loops=1)
                    ->  Index Scan using food_foods_fti_string_idx on
food_foods_fti f0  (cost=0.00..3.03 rows=1 width=4) (actual time=0.07..0.45
rows=23 loops=1)
                    ->  Index Scan using food_foods_fti_string_idx on
food_foods_fti f1  (cost=0.00..3.03 rows=1 width=4) (actual time=0.04..16.52
rows=1092 loops=23)
              ->  Index Scan using food_foods_oid_idx on food_foods f
(cost=0.00..6.01 rows=1 width=58) (actual time=0.03..0.04 rows=1 loops=8)
Total runtime: 532.49 msec
EXPLAIN
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bruce Momjian | 2002-08-14 04:42:48 | Re: [HACKERS] tsearch vs. fulltextindex | 
| Previous Message | Martijn van Oosterhout | 2002-08-14 04:16:07 | Re: Transaction Exception Question | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bruce Momjian | 2002-08-14 04:38:29 | Re: Temporary Views | 
| Previous Message | Tom Lane | 2002-08-14 04:31:55 | Re: db partial dumping with pg_dump | 
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bruce Momjian | 2002-08-14 04:42:48 | Re: [HACKERS] tsearch vs. fulltextindex | 
| Previous Message | Bruce Momjian | 2002-08-14 03:36:04 | Re: [SQL] 16 parameter limit |