|||
上次写完了最简单的group by语句,参看:group by 语句从parsetree到portal全过程内存结构
这次朝山前再推一步:写写带inner join的group by 语句从parsetree到portal全过程内存结构。
先定义我们的表,这回数据表稍微比原先的复杂些:
CREATE TABLE house
(
hid integer NOT NULL,
bedrooms integer,
"location" geometry, //这里用到了POSTGIS里中的geometry类型,读者当成一般类型好了,关系不大
CONSTRAINT pk_house PRIMARY KEY (hid),
);
CREATE TABLE sales
(
sid integer NOT NULL,
hid integer,
price integer,
"year" integer,
CONSTRAINT pk_sales PRIMARY KEY (sid),
CONSTRAINT fk_sales FOREIGN KEY (hid) REFERENCES house (hid)
);
执行
select sum(house.bedrooms),st_astext(st_convexhull(st_collect(house.location))),sum(sales.price)
from house,sales
where house.hid = sales.hid
group by house.location;
我们来分析分析。
1.parsetree
debug得到的parsetree list如下:
由于debug信息太长,我放到这里了,有兴趣的可以仔细看看。
看起来很吓人,实际上很简单,图示如下:
其中用到的简化的图形符号为:
2.Querytree
可以点击这里查看日志记录的query结构。
这样,我们可以得到对应的Query tree如下:
3.Plantree
首先看看日志里的plan是什么样子,我存到了这里,很长,是吧,不用怕,我们先来看看图:
更清晰的图,可以从这里下载。
4.Portal中用到的数据结构
稍等。
加我私人微信,交流技术。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 11:54
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社