Performance 如何加快查询速度?

Performance 如何加快查询速度?,performance,postgresql,plpgsql,postgresql-9.2,Performance,Postgresql,Plpgsql,Postgresql 9.2,查询: 并按距离排序,加快时间 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

查询:

并按距离排序,加快时间


XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX。这将取决于您查询的性质。如果您总是查询与特定公共交通相关的标签,则使用组合GIN索引:

CREATE OR REPLACE FUNCTION bus_idx_rels_parts(IN bigint, IN bigint, OUT idx integer)
RETURNS integer AS
' SELECT idx from opengeo.ru_psk_rels_parts_idx where id=$1 and unnest=$2 '
LANGUAGE sql VOLATILE
COST 100;
如果每种类型的
公共交通
只有少量标签,则该字段上只有一个普通索引:

CREATE INDEX ON opengeo.ru_psk_point USING GIN (public_transport, tags);
如果您有很多不同的标签,您经常查询这些标签,但不一定与特定的公共交通有关,那么在
标签上建立一个简单的GIN索引

CREATE INDEX ON opengeo.ru_psk_point (public_transport);

更新
  • 子查询中有ORDER BY,排序与否对子查询没有影响
    • 删除子查询中的ORDER BY子句
  • 您正在执行2 x 4731次函数
    bus\u idx\u rels\u parts(a,b)
    • 查看是否存在任何无意义的比较,或者这些函数的代码是否可以以PostgreSQL可以优化连接的方式移植到查询中

这看起来像是对调试帮助的请求(此处不涉及主题),不是一个正确的问题。这没有帮助。节省时间。@user15445添加了更多注释
CREATE INDEX ON opengeo.ru_psk_point USING GIN (public_transport, tags);
CREATE INDEX ON opengeo.ru_psk_point (public_transport);
CREATE INDEX ON opengeo.ru_psk_point USING GIN (tags);