Исходя из моего предыдущего вопроса по этой теме, Postgres combining multiple Indexes:Postgres GIST против индекса ВТКЕЯ
Я следующая таблице на Postgres 9.2 (с PostGIS):
CREATE TABLE updates (
update_id character varying(50) NOT NULL,
coords geography(Point,4326) NOT NULL,
user_id character varying(50) NOT NULL,
created_at timestamp without time zone NOT NULL
);
И я бегом следующим запроса на столе:
select *
from updates
where ST_DWithin(coords, ST_MakePoint(-126.4, 45.32)::geography, 30000)
and user_id='3212312'
order by created_at desc
limit 60
Итак, учитывая, что то, что индекс следует использовать для (Coords + user_id), GIST или BTree?
CREATE INDEX ix_coords_user_id ON updates USING GIST (coords, user_id);
ИЛИ
CREATE INDEX ix_coords_user_id ON updates (coords, user_id);
Я читал, что BTree работает лучше, чем GIST, но я вынужден использовать GIST, так как я использую PostGIS поле географии ??
Просьба показать «объяснить анализ» для обоих; вставьте планы на http://explain.depesz.com/ и напишите здесь. –