简答题 4.  笛卡尔积是什么?
【正确答案】笛卡尔积是把表中所有的记录做乘积操作,生成大量的结果,而通常结果中可用的值有限。笛卡尔积出现的原因多种多样,通常是由于连接条件缺失造成的,对笛卡尔积的使用,需要注意以下几点:
   1)笛卡尔积会在下面条件下产生:
   ①省略连接条件或连接条件缺失。
   ②连接条件无效,例如:表A和表B进行连接,但连接条件为A.ID=A.ID,这里的连接条件无效。
   ③统计信息不准确,例如:表A有1000W的数据量,但是在统计信息中记录的是0行,这种情况下表的连接易形成笛卡尔积。
   2)由于笛卡尔积中的所有表中的所有行互相连接,所以,形成笛卡尔积的结果集的记录数是组成它的各个子集的乘积。
   3)为了避免笛卡尔积,需要在WHERE字句中加入有效的连接条件。
   4)默认情况下,查询会返回全部行,包括重复行。
   下面举一个例子说明什么是笛卡尔积。在数据库中,SCOTT.EMP表中有14行记录,SCOTT.DEPT表中有4行记录,假设没有连接条件的话,SCOTT.EMP表中的每一行都和SCOTT.DEPT表中的每一行组合成新的一行,从而形成笛卡尔积,因此,共有14*4=56行记录,如下:
   
【答案解析】