{"id":5216,"date":"2021-04-19T11:19:35","date_gmt":"2021-04-19T03:19:35","guid":{"rendered":"https:\/\/www.gbase8.cn\/?p=5216"},"modified":"2021-04-19T14:40:43","modified_gmt":"2021-04-19T06:40:43","slug":"gbase-8a-%e5%81%9adistinct-%e6%93%8d%e4%bd%9c%e6%97%b6%e7%9a%842%e4%b8%aa%e5%8f%82%e6%95%b0%ef%bc%8c_t_gcluster_agg_distinct_redist_optimize","status":"publish","type":"post","link":"https:\/\/www.gbase8.cn\/en\/5216","title":{"rendered":"\u5357\u5927\u901a\u7528GBase 8a \u505adistinct \u64cd\u4f5c\u65f6\u76842\u4e2a\u53c2\u6570\uff0c_t_gcluster_agg_distinct_redist_optimize\u548c_t_gcluster_agg_distinct_redist_optimize_with_groupby"},"content":{"rendered":"<p>\u672c\u6587\u4ecb\u7ecd2\u4e2a\u548cdistinct \u6709\u5173\u7684\u53c2\u6570\u3002_t_gcluster_agg_distinct_redist_optimize \u548c _t_gcluster_agg_distinct_redist_optimize_with_groupby\u3002<\/p>\n\n\n\n<p>\u5982\u4e0b\u53c2\u6570\uff0c\u4ec5\u5728count distinct\u5217\u6216\u8005count distinct group\u5217\u4e0d\u662fhash\u5206\u5e03\u5217\u7684\u60c5\u51b5\u4e0b\u3002\u5982\u679cdistinct\u6216group\u6709hash\u5217\uff0c\u5168\u90e8\u672c\u5730\u8ba1\u7b97\u5373\u53ef\u3002<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Directory Navigation<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2b150f8a613\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2b150f8a613\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.gbase8.cn\/en\/5216\/#_t_gcluster_agg_distinct_redist_optimize\" >_t_gcluster_agg_distinct_redist_optimize<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.gbase8.cn\/en\/5216\/#%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92%E6%A0%B7%E4%BE%8B\" >\u6267\u884c\u8ba1\u5212\u6837\u4f8b<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.gbase8.cn\/en\/5216\/#_t_gcluster_agg_distinct_redist_optimize_with_groupby\" >_t_gcluster_agg_distinct_redist_optimize_with_groupby<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.gbase8.cn\/en\/5216\/#%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92%E6%A0%B7%E4%BE%8B-2\" >\u6267\u884c\u8ba1\u5212\u6837\u4f8b<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"_t_gcluster_agg_distinct_redist_optimize\"><\/span>_t_gcluster_agg_distinct_redist_optimize<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>aggr(distinct)\u4f18\u5316\u3002\u6ce8\u610f\u5e26group by\u65f6\u4e0d\u53c2\u4e0e<br>1\uff1a\u6253\u5f00\uff0c\u9ed8\u8ba4\u3002\u672c\u5730<br>0\uff1a\u5173\u95ed\uff0c\u6570\u636e\u4f1a\u5148\u62c9\u5230\u4e00\u4e2a\u8282\u70b9\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92%E6%A0%B7%E4%BE%8B\"><\/span>\u6267\u884c\u8ba1\u5212\u6837\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6570\u636e\u5148\u5728\u672c\u5730\u6839\u636edistinct\u5217\u505agroup, \u7136\u540e\u5c06\u7ed3\u679c\u6309\u7167distinct\u7684\u5217\u505a\u4e8c\u6b21\u5206\u53d1\u3002\u6bcf\u4e2a\u8282\u70b9\u672c\u5730\u505a\u5b8cagg\u540e\uff0c\u5c06\u7ed3\u679c\u6c47\u603b\u5230\u4e00\u4e2a\u8282\u70b9\uff0c\u6700\u540e\u5f97\u5230\u7ed3\u679c\u3002<\/p>\n\n\n\n<p>\u5982\u679c\u53c2\u6570\u4e3a0\uff0c\u5219\u6570\u636e\u672c\u5730\u505agroup\u540e\uff0c\u76f4\u63a5\u5168\u90e8\u6c47\u603b\u5230\u4e00\u4e2a\u8282\u70b9\uff0c\u5f97\u5230\u7ed3\u679c\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; set _t_gcluster_agg_distinct_redist_optimize=1;\nQuery OK, 0 rows affected (Elapsed: 00:00:00.00)\n\ngbase&gt; explain select count(distinct name) from t1;\n+----+----------------+-----------+--------+---------------+\n| ID | MOTION         | OPERATION | TABLE  | CONDITION     |\n+----+----------------+-----------+--------+---------------+\n| 02 | &#91;RESULT]       |  Step     | &lt;01&gt;   |               |\n|    |                |  AGG      |        |               |\n| 01 | &#91;GATHER]       |  Step     | &lt;00&gt;   |               |\n|    |                |  AGG      |        |               |\n| 00 | &#91;REDIST(name)] |  Table    | t1&#91;id] |               |\n|    |                |  GROUP    |        | GROUP BY name |\n+----+----------------+-----------+--------+---------------+\n6 rows in set (Elapsed: 00:00:00.00)\n\ngbase&gt; set _t_gcluster_agg_distinct_redist_optimize=0;\nQuery OK, 0 rows affected (Elapsed: 00:00:00.00)\n\ngbase&gt; explain select count(distinct name) from t1;\n+----+----------+-----------+--------+---------------+\n| ID | MOTION   | OPERATION | TABLE  | CONDITION     |\n+----+----------+-----------+--------+---------------+\n| 01 | &#91;RESULT] |  Step     | &lt;00&gt;   |               |\n|    |          |  AGG      |        |               |\n| 00 | &#91;GATHER] |  Table    | t1&#91;id] |               |\n|    |          |  GROUP    |        | GROUP BY name |\n+----+----------+-----------+--------+---------------+\n4 rows in set (Elapsed: 00:00:00.01)\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"_t_gcluster_agg_distinct_redist_optimize_with_groupby\"><\/span>_t_gcluster_agg_distinct_redist_optimize_with_groupby<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>agg(distinct A) group by B\u65f6\uff0c\u5f3a\u884c\u6307\u5b9a\u6309A\u5217\u505a\u91cd\u5206\u5e03\uff0c\u5fc5\u987b\u5728_t_gcluster_agg_distinct_redist_optimize\u6253\u5f00\u65f6\u624d\u751f\u6548\u3002<br>0\uff1a\u9ed8\u8ba4\u6309\u7167group by \u7684B\u5217\u91cd\u5206\u5e03<br>1\uff1a\u6309\u7167distinct\u7684A\u5217\u91cd\u5206\u5e03<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%E6%89%A7%E8%A1%8C%E8%AE%A1%E5%88%92%E6%A0%B7%E4%BE%8B-2\"><\/span>\u6267\u884c\u8ba1\u5212\u6837\u4f8b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>\u5982\u4e0b\u4f8b\u5b50\uff0c\u662f\u6309\u7167id\u5217\uff0c\u4e5f\u5c31\u662fgroup by \u7684\u5217\u505a\u52a8\u6001\u91cd\u5206\u5e03\u3002<\/p>\n\n\n\n<p>\u8bbe\u7f6e\u53c2\u6570\u4e3a1\uff0c\u5219\u591a\u4e86\u4e00\u6b65\uff0c\u5148\u6309\u7167distinct\u505a\u91cd\u5206\u5e03\uff0c\u7136\u540e\u518d\u505a\u4e00\u6b21\u6839\u636egroup \u5217\u7684\u4e8c\u6b21\u91cd\u5206\u5e03\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gbase&gt; explain select count(distinct name) from t2 group by id;\n+----+--------------+-----------+---------+-------------------+\n| ID | MOTION       | OPERATION | TABLE   | CONDITION         |\n+----+--------------+-----------+---------+-------------------+\n| 01 | &#91;RESULT]     |  Step     | &lt;00&gt;    |                   |\n|    |              |  GROUP    |         | GROUP BY id       |\n| 00 | &#91;REDIST(id)] |  Table    | t2&#91;DIS] |                   |\n|    |              |  GROUP    |         | GROUP BY id, name |\n+----+--------------+-----------+---------+-------------------+\n4 rows in set (Elapsed: 00:00:00.01)\n\ngbase&gt; set _t_gcluster_agg_distinct_redist_optimize_with_groupby=1;\nQuery OK, 0 rows affected (Elapsed: 00:00:00.01)\n\ngbase&gt; explain select count(distinct name) from t2 group by id;\n+----+----------------+-----------+---------+-------------------+\n| ID | MOTION         | OPERATION | TABLE   | CONDITION         |\n+----+----------------+-----------+---------+-------------------+\n| 02 | &#91;RESULT]       |  Step     | &lt;01&gt;    |                   |\n|    |                |  GROUP    |         | GROUP BY id       |\n| 01 | &#91;REDIST(id)]   |  Step     | &lt;00&gt;    |                   |\n|    |                |  GROUP    |         | GROUP BY id       |\n| 00 | &#91;REDIST(name)] |  Table    | t2&#91;DIS] |                   |\n|    |                |  GROUP    |         | GROUP BY id, name |\n+----+----------------+-----------+---------+-------------------+\n6 rows in set (Elapsed: 00:00:00.02)\n<\/code><\/pre>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u4ecb\u7ecd2\u4e2a\u548cdistinct \u6709\u5173\u7684\u53c2\u6570\u3002_t_gcluster_agg_distinct_redist_optimize \u548c _t_gcluster_agg_distinct_redist_optimize_with_groupby\u3002<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-5216","post","type-post","status-publish","format-standard","hentry","category-gbase8a"],"_links":{"self":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/5216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/comments?post=5216"}],"version-history":[{"count":7,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/5216\/revisions"}],"predecessor-version":[{"id":5444,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/posts\/5216\/revisions\/5444"}],"wp:attachment":[{"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/media?parent=5216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/categories?post=5216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gbase8.cn\/en\/wp-json\/wp\/v2\/tags?post=5216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}