我有一张user_issues
包含 3 列的表格:id
、component_id
和path
,我需要对它进行过滤,但component_id
和的元组path
。
因此我使用以下查询来实现这一点:
SELECT id
FROM user_issues ui
JOIN (VALUES ($1, $2), ($3, $4)) AS v(component_id, path) ON ui.component_id = v.component_id AND ui.path = v.path;
我想知道是否有更优雅或更有效的方法来实现这一点(而不是使用VALUES
子句来创建一组行(元组))。
您的原件已经产生最佳性能。
至于“更优雅”:
甚至可能是:
但我会抵制使用连接来简化的诱惑
NATURAL
。如果其中一个列名不匹配,这将退化为CROSS JOIN
。手册:“最优雅”的方式实际上取决于食物链如何传递过滤值。如果您以两个(或更多)数组(以旋转形式)的形式获取它们,则并行解除多个数组的嵌套将更加优雅:
看: