PostgreSQL Index Index

I have a table with two dates, dateTo and dateFrom, I would like to use the daterange approach in queries and the gist index, but it doesn't seem to work. The table looks like this:

CREATE TABLE test (
  id         bigeserial,
  begin_date date,
  end_date   date
);
CREATE INDEX "idx1"
  ON test
  USING gist (daterange(begin_date, end_date));

Then, when I try to explain a query like:

SELECT t.*
FROM test t
WHERE daterange(t.begin_date,t.end_date,'[]') && daterange('2015-12-30 00:00:00.0','2016-10-28 00:00:00.0','[]')

I get Seq Scan.

Is this use of the gist index incorrect or is this scenario impossible?

+4
source share
1 answer

daterange(begin_date, end_date), daterange(begin_date, end_date, '[]') && .... PostgreSQL . , (int_col + 2) WHERE int_col + 1 > 2. , . , , (.. ).

:

CREATE INDEX idx1 ON test USING gist (daterange(begin_date, end_date, '[]'));

:

CREATE INDEX idx2 ON test USING gist (daterange(begin_date, end_date + 1));

: , end_date. , daterange .

:

WHERE daterange(begin_date, end_date, '[]') && daterange(?, ?, ?)

:

WHERE daterange(begin_date, end_date + 1) && daterange(?, ?, ?)

: && ( ).

+2

Source: https://habr.com/ru/post/1675061/


All Articles