SELECT
"tag"."id" AS tag_id,
"city"."id" AS city_id,
"city"."name" AS city_name,
"city"."state_short_name" AS state_short_name,
"tag"."name_singular" AS tag_name_singular,
"tag"."name_plural" AS tag_name_plural
FROM tag
,LATERAL
( SELECT city.id,
city.name,
city.state_short_name
FROM city
INNER JOIN "organization" ON (organization.city_id = city.id)
INNER JOIN "tag_organization" ON organization.id=organization_id
WHERE
"tag_organization"."tag_id" = "tag"."id"
AND "tag_organization"."tag_id" IN (41020,175458)
AND city.id != '1017900' --!!!! так и есть -- строка -- и уходите от pkey-scan
ORDER BY "city"."location" <-> st_setsrid(ST_GeomFromText('POINT (-83.7340729999999951 42.7927109999999971)'),4326)
LIMIT 1 /* DISTINCT ON "tag"."id" = "tag_organization"."tag_id" */
) city
WHERE
tag.id IN (41020,175458);
? |