只有当您需要从多个表中选择数据时,才存在“使用连接转换”,而您在这里没有这样做。这是优化的第一步。在您的情况下,使用join时,它会根据联接的辅助表中的多个可用数据返回多个相同的数据行,从而污染您的结果集。
SELECT "listing_variants".*
FROM "listing_variants"
WHERE "listing_variants"."is_linked" = 'f'
AND EXISTS(SELECT 1 FROM "links" ON "links"."listing_variant_id" = "listing_variants"."id"
JOIN "product_variants" ON "product_variants"."id" = "links"."product_variant_id"
AND "listing_variants"."available_quantity" != "product_variants"."available_quantity"
JOIN "listings" ON "listing_variants"."listing_id" = "listings"."id"
AND "listings"."sales_channel_id" = 31);
除此之外,您的查询非常简单,并且索引良好&数据分区只能有助于进一步优化。