В таблице tweets сохранены оригинальные объекты JSON, полученные от Twitter API.
Операции выделения части объекта JSON сами по себе не индексируются:
=> EXPLAIN(costs off,analyze) SELECT * FROM tweets WHERE tweet->>'lang' = 'ru';
QUERY PLAN ---------------------------------------------------------------------- Seq Scan on tweets (actual time=117.791..14187.916 rows=133 loops=1) Filter: ((tweet ->> 'lang'::text) = 'ru'::text) Rows Removed by Filter: 582510 Planning time: 4.655 ms Execution time: 14189.854 ms (5 rows)
Хотя никто не мешает построить обычное B-дерево по выражению:
=> CREATE INDEX tweets_tweet_btree ON tweets((tweet->>'lang'));
CREATE INDEX