You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by AsterixDB Code Review <do...@asterix-gerrit.ics.uci.edu> on 2024/04/25 02:02:02 UTC
Change in asterixdb[master]: [ASTERIX-3376][COMP] Choose smaller side's sample
From <mu...@couchbase.com>:
murali.krishna@couchbase.com has uploaded this change for review. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18254 )
Change subject: [ASTERIX-3376][COMP] Choose smaller side's sample
......................................................................
[ASTERIX-3376][COMP] Choose smaller side's sample
Change-Id: I63445673ba10782d85717b780c07687db8f8011f
---
M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
1 file changed, 20 insertions(+), 2 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/54/18254/1
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
index 785da69..574e207 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/Stats.java
@@ -163,12 +163,21 @@
return productivity / card1;
}
} else {
- ILogicalOperator leafInput = joinEnum.leafInputs.get(idx2 - 1); // we arbitrarily pick one side
+ ILogicalOperator leafInput;
+ LogicalVariable var;
+ // choose the smaller side sample; better results this way for sure!
+ if (card1 < card2) {
+ leafInput = joinEnum.leafInputs.get(idx1 - 1);
+ var = exprUsedVars.get(0);
+ } else {
+ leafInput = joinEnum.leafInputs.get(idx2 - 1);
+ var = exprUsedVars.get(1);
+ }
Index index = findIndex(leafInput);
if (index == null) {
return 1.0;
}
- List<List<IAObject>> result = runSamplingQueryDistinct(this.optCtx, leafInput, exprUsedVars.get(1), index);
+ List<List<IAObject>> result = runSamplingQueryDistinct(this.optCtx, leafInput, var, index);
if (result == null) {
return 1.0;
}
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18254
To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I63445673ba10782d85717b780c07687db8f8011f
Gerrit-Change-Number: 18254
Gerrit-PatchSet: 1
Gerrit-Owner: murali.krishna@couchbase.com
Gerrit-MessageType: newchange