Re: 請問在 Flink SQL 上能不能指定 WHERE 裡的判斷式的執行順序?

2019-07-30 文章 Tony Wei
Hi, 非常感謝你的回覆。但我認為子查詢可能沒有辦法滿足我想要的功能,原因是 sql optimizar 會 嘗試做 where condition pushdown,其結果會跟原本的 sql 相似。 我在 user mailing list 上問了相同的問題,並得到了一個可行的解法 [1],給你參考看看。 Best, Tony Wei [1] http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Is-it-possible-to-decide-the-order-of-where-condition

Re: 請問在 Flink SQL 上能不能指定 WHERE 裡的判斷式的執行順序?

2019-07-29 文章 shicheng31...@gmail.com
不太清楚能否直接实现你说的这种功能。不过,你可以换一种思路,比如用子查询: select * from ( select * from (select *, if(user.is_robot,0, 1) flag from users) tab_a where flag=1) tab_b where UDF_NEED_TO_QUERY_DB(user) shicheng31...@gmail.com 发件人: Tony Wei 发送时间: 2019-07-27 00:37 收件人: user-zh 主题: 請問在 Flink SQL 上能不能指定

請問在 Flink SQL 上能不能指定 WHERE 裡的判斷式的執行順序?

2019-07-26 文章 Tony Wei
Hi, 想請問是否有辦法在 Flink SQL 上指明 WHERE 裡的判斷式的執行順序,來做到一些特定情況下的 查詢優化? 舉例來說,在下面的 SQL,假如有個很耗時的 UDF 需要每次都去查詢資料庫。在這樣的狀況下, 如果可以確保優先執行 `!user.is_robot` 的判斷,再去執行後面的 UDF 的話,就能減少許多的資料 庫查詢。因為那些在 `user.is_robot` 裡得到 `true` 的數據就可以提早被丟棄,而不用去執行後面 較為花費時間的 UDF 了。 select * from users where !user.is_robot and UDF_NEED