只要是连接查询,无论自然连接还是等值连接都会先做笛卡尔积吗?

笛卡尔积的效率是不是很低?一般数据量大的业务尽量不要做连表查?

阅读 6.5k
3 个回答

有索引的情况下,会尝试先利用索引来连接。只有索引用不到才会做笛卡尔积。所以,索引怎么设计是非常关键的,设计得不好就有可能让数据库做笛卡尔积了。

另外,现代大型互联网应用,对数据库的操作,连表查的写法会越来越少,因为数据库负荷很重,各种繁杂的事情宁可用程序做掉。

表连接查询,如果有连接的条件,是不会做笛卡尔积计算的,这样做效率太低了。

mysql的连接查询,只有NESTED LOOP一种方式,oracle有多种,详细的情况自己搜索相关的资料吧。

可以深入了解一下连接算法

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