call.getPlanner().setImportance is used to avoid use of known-to-be-inefficient relation, however the check of importance is performed very late.
The check is performed in org.apache.calcite.plan.volcano.RuleQueue#skipMatch when ruleCalls have already been created.
I suggest to move the check into VolcanoPlanner#fireRules and VolcanoRuleCall#matchRecurse
It would reduce amount of "possible" rule executions.
Note: calling setImportance BEFORE transformTo would would help as well to filter out unimportant rule calls early.