dez*_*zso 5 postgresql performance index execution-plan query-performance
我想知道关于stackoverflow的问题的答案中提供的解决方案的相对性能,我决定运行一些测试。
在给定一组优先级递减的条件的情况下,OP 希望获得第一个匹配行。两种解决方案都涉及一个伪列,但一个(我的)涉及将多个SELECT
语句UNION ALL
组合在一起,而另一个则构造了一个CASE
表达式。
我分享我的结果,希望有人会发现这很有用。
你的测试设计有缺陷。您正在测试不正确的结果。
我在你所指的 SO 上添加了一个答案。
在您的CASE 版本中,您不能添加ORDER BY col1, col2
. 必须是ORDER BY precedence
。但它仍然是不正确的。你将不得不ORDER BY
在和得分个别条件得到满足行最条件第一。
同样,您的UNION ALL 版本会产生不正确的结果。
然而,这一切似乎都没有必要,有一个更简单、更快的解决方案UNION ALL
。参考我对SO问题的回答或使用sqlfiddle玩
归档时间: |
|
查看次数: |
300 次 |
最近记录: |