oracle数据库问题,多表查询,有关笛卡尔积?

多表查询,内连接、外连接、自然连接、左连接、右连接有什么区别?

为什么查询的时候要消除笛卡尔积,如果不消除有什么问题吗?笛卡尔积有什么影响?

求大神指导,非常感谢!

阅读 8.8k
1 个回答

你这是好几个问题。

多表查询,内连接、外连接、自然连接、左连接、右连接有什么区别?

这个是概念,可以 Google。

为什么查询的时候要消除笛卡尔积,如果不消除有什么问题吗?笛卡尔积有什么影响?

简单解释一下,举个例子:

  • 表A共50行
  • 表B共100行

我们进行多表查询。(假设结果是30行)

第一种方式,先求A和B的笛卡尔积,共得到50*100=5000行,然后在5000行的一个临时表里面查找符合条件的30行(映射)。

第二种方式,先在表A中查询符合条件的,得到10个结果,然后把结果和表B相乘(笛卡尔积),得到1000行的临时表,最后再查找一次(映射)。

还有第三种方式,就是先操作B,映射的结果在和A相乘。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进