笛卡尔积问题

作者: BI罗 | 来源:发表于2019-02-19 10:16 被阅读79次
  1. select * from tablea ,tableb where tablea.id=tableb.id sql
    select * from tablea,tableb 其实可以首先执行这句 sql 就能发现出现的结果是 tablea 的每个记录和 table 中的所有记录都生成一条记录。也就是假如 tablea 有10条记录,tableb 有10条记录,最后会首先 100 条记录。
    用 where 条件去过滤内容,在数据量不大的时候,问题不大,但是到了比如表 A有1万 数据,表 B有1万 数据,这样的会就会产生 1 亿的数据,然后再用 where 条件去过渡,性能将下降得十分厉害。

  2. 用 join on避免笛卡尔积问题,select * from tablea join tableb on tablea.id=tableb.id
    执行顺序是先执行on 中的条件,来连接两条数据,大大的减少了需要排除的数据,然后在 where 条件中再去过滤数据。
    总结:在实际应用过程中通过关联表的最小粒度关联,可以避免产生笛卡尔积。这里的最小粒度可以理解为表中的唯一性约束的字段值.

相关文章

  • 笛卡尔积问题

    select * from tablea ,tableb where tablea.id=tableb.id sq...

  • Oracle入门笔记【3】多表查询与分组统计查询

    1,先实现多表查询: (可以发现两个集合发生了乘积,这叫笛卡尔积问题。) 消除笛卡尔积: (这只是消除了显示的笛卡...

  • 三、连接查询

    内连接 1、笛卡尔积 语法 无条件筛选 有条件筛选 什么是笛卡尔积?笛卡尔积就是将A和B表中的行任意组合,得到一个...

  • 笛卡尔积

    笛卡尔积,是指集合A中元素与B中元素所有的两两组合。 如A=(a,b),B=(1,2),那么笛卡尔积为(a1,a2...

  • 笛卡尔积

    笛卡尔乘积:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积表示为...

  • 笛卡尔积

    之前写一个SKU的插件,用到了【笛卡尔积】,明白其原理,但是就是写不出来 看来功力尚浅,需要努力 后来借鉴了网上的...

  • 笛卡尔积

    1.什么笛卡尔积 百科:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又...

  • 笛卡尔积

    Pandas如何实现相当于SQL交叉连接(笛卡尔积) https://www.cnpython.com/qa/14...

  • 笛卡尔积

    首先知道啥是笛卡尔积,百度百科中解释是这样的: 笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesia...

  • 笛卡尔积

    假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a...

网友评论

    本文标题:笛卡尔积问题

    本文链接:https://www.haomeiwen.com/subject/sphxyqtx.html