Вот мой стол (на самом деле материализованное представление), в Postgres 9.4:Почему Postgres не использует мой индекс?
Materialized view "public.vw_presentation_summary"
Column | Type | Modifiers
-------------------+-----------------------+-----------
processing_date | date |
presentation_code | character varying(15) |
items | numeric |
cost | double precision |
Indexes:
"vw_idx_presentation_summary" btree (presentation_code)
Я просто запустить VACUUM ANALYZE vw_presentation_summary
, поэтому планировщик запросов должен быть в курсе.
Теперь, если я бегу explain (analyse, buffers) select * from vw_presentation_summary where presentation_code LIKE '0205051I0BB%'
это то, что я вижу:
QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------
Seq Scan on vw_presentation_summary (cost=0.00..23202.16 rows=182 width=32) (actual time=0.440..222.383 rows=224 loops=1)
Filter: ((presentation_code)::text ~~ '0205051I0BB%'::text)
Rows Removed by Filter: 1115229
Buffers: shared hit=9259
Planning time: 0.760 ms
Execution time: 222.524 ms
(6 rows)
Объяснить ссылка: http://explain.depesz.com/s/nTL4
Почему это работает в Seq Scan не указательный поиск?
http://www.postgresql.org/docs/9.4/static/indexes-opclass.html – zerkms
Релевантно (я бы даже сказал дубликат): http://stackoverflow.com/q/27435980/251311 – zerkms