关于access中sql 笛卡尔乘积积的问题

sql语句中出现笛卡尔乘积
时间: 17:20:43
&&&& 阅读:118
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
&没有join条件导致笛卡尔乘积
&&&&& 学过线性代数的人都知道,笛卡尔乘积通俗的说,就是两个集合中的每个成员,都与对方集合中的随意一个成员有关联。能够想象,在SQL查询中,假设对两张表join查询而没有join条件时,就会产生笛卡尔乘积。这就是我们的笛卡尔乘积导致的性能问题中最常见的案例:开发者在写代码时遗漏了join条件。
发生笛卡尔乘积的sql:
select sum(project_fj.danjia*project_fj.mianji) from project_fj,orderform where project_fj.zhuangtai=‘未售‘ and project_fj.project_id=30
这个语句事实上仅仅是sql语句的一部分,问题是还有一部分用到了表orderform,所以from中有orderform,可是上面的这部分语句全然没实用到orderform,可是不设置条件就导致了笛卡尔乘积。
解决方法:使用LEFT JOIN
select sum(project_fj.danjia*project_fj.mianji) from project_fj LEFT JOIN orderform ON project_fj.id=orderform.project_id
where project_fj.zhuangtai=‘未售‘ and project_fj.project_id=30
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 sql 笛卡尔乘积 的文章

 

随机推荐