select 查询时怎样过滤一个仓库和它的下属仓库

增加索引后在presto中原语句查询发现並没有显著增加查询效率时间还是在15s左右。

以为索引 没生效但是使用explain查看以及在索引表中查询 都能查询到索引。

使用explain分析查询索引表語句

发现在查询索引表时也需要全表扫描索引表,花费的时间本来就有13s左右

所以也就是说 针对少数据量,索引并不能把presto查询hive的效率提高到1s内最极限就是达到 查询索引所花费的时间。

1、hive的sql语句在使用时尽量少用or语句

如果工资大于1230

城市 、仓库号 在 倉库表 里

工资大于1230的人所在的城市为 北京 上海 北京

E1 北京 (注意他们仓库号是相同的,意思是北京的仓库WH1里有E1这个职工工资是大于1230的)

而E3不會和WH3的一起它也应该和WH2的联系起来,所以E3所在的城市也是上海

* 如果没有(职工.仓库号=仓库.仓库号)那么职工号和城市分别在各自的表里就無法连接起来了,正是因为他们两个表里都有 仓库号 才能让两个表连接起来!

——————————————————————————————————

2.这个问题和第一个是一个道理哈~

第一排的意思是:在 仓库表 里找出 所有 的信息条件是 仓库号要满足X条件

再看题目,要求的是 工资多于1210的人才可以

但是在第一排中提都没有提到 工资

因为 仓库表 里是没有 工资 这个字段名的

要找到 工资 这个字段名很明显应该聯想到 职工表

要把 工资 和 仓库表 联系起来

我们就想到了 两个表里都含有 仓库号

*所以 仓库号 又起到了连接两个表的关系!

找出 职工表 里工资尛于等于1210的 仓库号

找出 仓库号 不满足(not in)工资小于等于1210的 条件的所有信息 !

————————————————————————————————

关系数据库标准语言SQL(查询功能)


SQL的核心是数据查询SQL的查询命令也称做SELECT 命令,它的基本组成形式由


超连接:首先保证一个表中满足条件的元组都在结果表中然后将满足联接条件的元组与另一个表的元组进行联接,不满足的联接条件的则将应来自另一表的属性值为空
   SQL中超联接的运算符号是“*=”和“=*”,其Φ“*=”是左联接“=*”为右联接。
VF不支持超联结运算符(“*=”和“=*”)但VF提供专门的语法格式  

右联接,即除满足联接条件的记录出现在查询结果中外第二个表中的不满足条件也出现在查询结果中  


给职工表中插入一个记录

全联接,将满足条件的记录显示两个表中不满足嘚都显示出来

我要回帖

 

随机推荐