我有三个自定义函数执行非常类似的操作:它们从相同的,相当复杂的连接集中提取不同的数据 - 生成连接表需要花费时间 - 并且通常都在同一个{{ 1}}。这显然是低效的,我想提高性能,但最好的方法是什么呢?
对于像我这样的新秀来说,第一个选择似乎是最好的解决方案;但它显然有一个缺点,就是创建一个非常大的物化视图,这需要维护(所以它根据需要刷新);虽然这个MV可能在其他地方很有用......第二种选择可能是一种黑客攻击;但还有什么我还没有考虑过吗?
答案 0 :(得分:1)
我更希望完全省略这些函数并重新编写查询,以便不使用函数。任何选择数据的函数(特别是使用“复合连接”)都是减慢查询速度的可靠方法,因为对于主查询处理的每一行(甚至不一定返回),该函数必须执行一次,可能是1000s(或者100,000s)次。
答案 1 :(得分:0)
我会谨慎地选择选项2,除非你真的想要一个物化视图。您可以将该函数转换为表格,以便您可以正常选择。