...
The SQL syntax just like the following:
Code Block |
---|
query:
select /*+ hint_content[, hint_content] */ ...
hint_content:
hint_strategy_name(hint_item[,hint_item])
hint_strategy_name:
supported_join_hint_name
hint_item:
string_literal |
...
Support Strategies
The following Join strategies are currently supported in Flink SQL for batch job:
...
| advantage | shortcoming |
proposal 1: writing order first (we support) | - easy to resolve the hint conflict
| - the first hint by the written order may be not the most optimal strategy
|
proposal 2: high priority first (different join hints have different priority)
| - always choose the better join strategy by the priority we define.
- user can write two or more two join hints and all of them can be considered by actual scene
| - hard to define the priority when a new join strategy will be added
- user can't control the order of trying different join strategies
|
proposal 3: least cost first | - always choose the faster join strategy by CBO
- user can write two or more join hints and all of them can be considered by CBO
| - It depends on CBO and may lead to an uncontrollable behavior.
- user can't control the order of trying different join strategies
|
proposal 4: only try the first hint | - easy to resolve the hint conflict
| - sometimes user want to try both two join hints but this proposal may only try one join hint
|
proposal 5: ignore conflict hints | - easy enough to resolve the hint conflict
| - sometimes user want to try both two join hints but this proposal will ignore all of them
|
...