[GENERAL] Seq scan X Index scan

Поиск
Список
Период
Сортировка
От Patrick B
Тема [GENERAL] Seq scan X Index scan
Дата
Msg-id CAJNY3itixNhLyP794khLSrfqu8kXs94GWvNBNerXLWZh18MaCQ@mail.gmail.com
обсуждение исходный текст
Ответы Re: [GENERAL] Seq scan X Index scan  ("David G. Johnston" <david.g.johnston@gmail.com>)
Список pgsql-general
Hi all.

I'm testing GIN indexes on a wildcard search.

Basically I've created this on my test environment:

create table test_gin_index (
name_first CHARACTER VARYING(80) DEFAULT ''::CHARACTER VARYING,
name_last CHARACTER VARYING(80) DEFAULT ''::CHARACTER VARYING
);

insert into test_gin_index VALUES ('jhon','backer');
insert into test_gin_index VALUES ('paul','min');
insert into test_gin_index VALUES ('emily','foo');

CREATE EXTENSION pg_trgm;
create index on test_gin_index using gin (name_first gin_trgm_ops);
analyze  test_gin_index;


Explain analyze with SEQ scans:

explain analyze select * from test_gin_index where name_first ILIKE '%on%';

                                               QUERY PLAN                                                

---------------------------------------------------------------------------------------------------------

 Seq Scan on test_gin_index  (cost=0.00..1.04 rows=1 width=19) (actual time=0.009..0.012 rows=1 loops=1)

   Filter: ((name_first)::text ~~* '%on%'::text)

   Rows Removed by Filter: 2

 Planning time: 0.075 ms

 Execution time: 0.027 ms

(5 rows)


Explain analyze with INDEX scan:

explain analyze select * from test_gin_index where name_first ILIKE '%on%';

                                                              QUERY PLAN                                                               

---------------------------------------------------------------------------------------------------------------------------------------

 Bitmap Heap Scan on test_gin_index  (cost=92.00..96.02 rows=1 width=19) (actual time=0.020..0.022 rows=1 loops=1)

   Recheck Cond: ((name_first)::text ~~* '%on%'::text)

   Rows Removed by Index Recheck: 2

   Heap Blocks: exact=1

   ->  Bitmap Index Scan on test_gin_index_name_first_idx  (cost=0.00..92.00 rows=1 width=0) (actual time=0.010..0.010 rows=3 loops=1)

         Index Cond: ((name_first)::text ~~* '%on%'::text)

 Planning time: 0.122 ms

 Execution time: 0.042 ms

(8 rows)


Why is SEQ SCAN faster than index scan? This is an environment test but i'm running the same test on a production environment and also seq scan is cheaper than index.


Thanks

Patrick

В списке pgsql-general по дате отправления:

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: [GENERAL] Unable to start postgresql
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: [GENERAL] Seq scan X Index scan