对于postgresql and的简单猜想

对于postgresql and的简单猜想,第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 今天做了这样的实验,目的是验证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的时候,就会按照手写的顺序。 总结

以上是内存溢出为你收集整理的对于postgresql and的简单猜想全部内容,希望文章能够帮你解决对于postgresql and的简单猜想所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1178115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存