| getStringAvgSizeForSort(Slot, Statistics) |   | 26% |   | 12% | 4 | 5 | 4 | 7 | 0 | 1 |
| getJoinPairStringAvgSizeForSort(Pair, Statistics, Statistics) |   | 30% |   | 25% | 2 | 3 | 1 | 3 | 0 | 1 |
| selectOptimalJoinShuffleKeysFromPairs(List, Pair, Statistics, Statistics, double, double, int) |   | 94% |   | 69% | 9 | 19 | 0 | 40 | 0 | 1 |
| selectOptimalShuffleKeys(List, Statistics, double, int) |   | 93% |   | 77% | 4 | 10 | 2 | 28 | 0 | 1 |
| tryFindOptimalShuffleKeyForJoinWithDistributeColumns(ConnectContext, List, List, List, List, Statistics, Statistics) |   | 90% |   | 60% | 4 | 6 | 3 | 14 | 0 | 1 |
| lambda$selectOptimalShuffleKeys$0(SlotReference) |   | 58% |   | 25% | 2 | 3 | 0 | 1 | 0 | 1 |
| getTypeSortPriority(DataType) |   | 50% |   | 25% | 2 | 3 | 1 | 3 | 0 | 1 |
| ShuffleKeyPruneUtils() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| toOptionalIfChanged(List, List) |   | 77% |   | 50% | 1 | 2 | 1 | 3 | 0 | 1 |
| sortJoinKeyPairsByTypePriority(List, Statistics, Statistics) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| toOptionalIfChanged(Pair, Pair) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| sortShuffleKeysByTypePriority(List, Statistics) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| selectBestShuffleKeyForAgg(PhysicalHashAggregate, List, Statistics, ConnectContext) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| lambda$sortJoinKeyPairsByTypePriority$3(Pair) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$sortJoinKeyPairsByTypePriority$4(Statistics, Statistics, Pair) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$sortShuffleKeysByTypePriority$2(Statistics, SlotReference) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$sortShuffleKeysByTypePriority$1(SlotReference) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |