对于postgresql and的简单猜想
发布时间:2020-12-13 17:38:05 所属栏目:百科 来源:网络整理
导读:今天做了这样的实验,目的是验证where条件后的a_expr and a_expr的顺序。 准备: sql语句为: create table a1 (a int); create table a2 (a int); create table a3 (a int,b int); create table a4 (a int,b int); insert into a1 values (0),(1);//(被除数
今天做了这样的实验,目的是验证where条件后的a_expr and a_expr的顺序。
准备:
sql语句为:
create table a1 (a int);
create table a2 (a int);
create table a3 (a int,b int);
create table a4 (a int,b int);
insert into a1 values (0),(1);//(被除数)(除数)
insert into a2 values (0),(0);//
(被除数)(除数)
insert into a3 values (0,0),(1,1);//
(被除数,测试数)(除数,测试数)
insert into a4 values (0,1),0);//
(被除数,测试数)(除数,测试数)
需要知道的:
select 4/0;
ERROR: division by zero
select * from a1 where (4 / a > 2) and (a > 0);//
(4 / a > 2) a有可能为0
返回1;
select * from a1 where (4 / a > 2) and (a > a-1);
ERROR: division by zero
select * from a2 where (4 / a > 2) and (a > 0);
无返回;
select * from a3 where (4 / a > 2) and (b > 0);
返回1;
select * from a4 where (4 / a > 2) and (b > 0);
ERROR: division by zero
由此猜想select查询应该是有一步优化,首先对a处理,这样会加快速度,减少重复运算,从而,没有进行/0操作。
当没有and时,执行计划会根据通过语法解析的节点复杂度进行重新排序,而有or的时候,就会按照手写的顺序。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- react中使用prop-types检测props数据类型
- ruby-on-rails – Ruby on Rails,如何确定请求是由机器人还
- reactos操作系统实现(155)
- C++11 Lambda表达式(匿名函数)详解
- Akka实战:分散、聚合模式
- ruby-on-rails – Ruby on Rails:使用一个表单和一个提交为
- 用SpriteBuilder简化"耕牛遍地走"的动画效果(三)
- 重载<<运算符C - 指向类的指针
- Ajax本地跨域问题 Cross origin requests are only support
- ruby-on-rails – 将布尔参数传递给rails控制器?