Какой правильный индекс для запроса структур в массивах в Postgres jsonb?

Я экспериментирую с сохранением значений, подобных следующему в Postgresjsonb поле в Postgres 9.4:

[{"event_slug":"test_1","start_time":"2014-10-08","end_time":"2014-10-12"},
 {"event_slug":"test_2","start_time":"2013-06-24","end_time":"2013-07-02"},
 {"event_slug":"test_3","start_time":"2014-03-26","end_time":"2014-03-30"}]

Я выполняю запросы как:

SELECT * FROM locations
WHERE EXISTS (
  SELECT 1 FROM jsonb_array_elements(events) AS e
  WHERE (
    e->>'event_slug' = 'test_1' AND
    (
      e->>'start_time' >= '2014-10-30 14:04:06 -0400' OR
      e->>'end_time' >= '2014-10-30 14:04:06 -0400'
    )
  )
)

Как бы я создал индекс для этих данных, чтобы использовать такие запросы, как приведенные выше? Это звучит разумно для нескольких миллионов строк, каждая из которых содержит ~ 10 событий в этом столбце?

Стоит отметить, что, похоже, я все еще получаю последовательные сканы с:

CREATE INDEX events_gin_idx ON some_table USING GIN (events);

Я предполагаю, что первое, что я делаю в запросе, - это преобразование данных в элементы массива json.

Ответы на вопрос(2)

Ваш ответ на вопрос