博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql语句中出现笛卡尔乘积
阅读量:7061 次
发布时间:2019-06-28

本文共 611 字,大约阅读时间需要 2 分钟。

 没有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

 

转载地址:http://knyll.baihongyu.com/

你可能感兴趣的文章
GrooveX研发情感治愈机器人lovot,可与人类完成亲密互动
查看>>
使用kubeadm安装k8s-1.11版本
查看>>
美联邦调查局 FBI 网站被黑,数千特工信息泄露
查看>>
超燃!Apache Flink 全球顶级盛会强势来袭
查看>>
约你一起来写作
查看>>
修改arcgis infowindow 放大和缩小的模板
查看>>
ASP.NET 2.0+Atlas编写鼠标拖放程序(2)
查看>>
ps与top命令简单介绍
查看>>
js12---闭包,原型,继承
查看>>
JavaScript返回上一页代码区别
查看>>
EntityFramework 如何进行异步化(关键词:async·await·SaveChangesAsync·ToListAsync)
查看>>
百度编辑器ueditor每次编辑后多一个空行的解决办法
查看>>
C#扇形的绘制与Hittest交互、图种制作
查看>>
【MVC 4】5.SportsSore —— 一个真实的应用程序
查看>>
Lucene.Net:构造搜索表达式简化搜索
查看>>
Hadoop - Zeppelin 使用心得
查看>>
Android GIS开发系列-- 入门季(2) MapView与图层介绍
查看>>
爪哇国新游记之二十五----图及其遍历查找
查看>>
Windows Live Writer Technical Preview 公布下载
查看>>
iphone:使用NSFileManager取得目录下所有文件(遍历所有文件)
查看>>