同事面试一位求职者,问:一个表A有5条数据,一个表B有15条数据,如果没写关联条件,这样查出来会有多少数据?求职者:20条。面试完后,同事问我是多少条,我答了也是20条。同事:我晕,这是笛卡儿积啊,常识哦,你查下资料。
笛卡尔(Descartes)乘积又叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。资料来自百度百科。那么答案很清楚,75条。我表示汗颜啊,近两年工作经验就这样被KO了。
同事说:我问这个面试者问题是因为之前的公司有个同事写了个sql,A表有300万数据,B表也有30多万数据,结果没写关联条件,造成系统异常,用户被迫中断服务,后果很严重啊。