日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
數(shù)據(jù)庫開發(fā)應知應會之笛卡爾積

 本文轉載自微信公眾號「活在信息時代」,作者活在信息時代。轉載本文請聯(lián)系活在信息時代公眾號。

很多數(shù)據(jù)庫開發(fā)人員都聽說過笛卡爾積的概念,也可能偶爾碰上過因為SQL語句或者數(shù)據(jù)表數(shù)據(jù)問題而產(chǎn)生的笛卡爾積問題。但是很多人對于笛卡爾積產(chǎn)生的原因和如何避免還是有些一知半解。所以我們今天就簡單明了地給大家介紹一下什么情況下會產(chǎn)生笛卡爾積問題,以及如何避免。

一、什么是笛卡爾積

笛卡爾積是指在數(shù)學中,兩個集合X和Y的笛卡尓積(Cartesian product),又稱直積,表示為X × Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員。

假設集合A={a, b}有兩個元素,集合B={0, 1, 2}有三個元素,則兩個集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}有2*3為6個元素。

在SQL查詢語句中,出現(xiàn)笛卡爾積的情況都是出現(xiàn)在關聯(lián)查詢上,具體包括下面兩種。我們以下面兩張表為例,給大家介紹一下。

第一張表是雇員表:有20條數(shù)據(jù),如下圖:

第二張表為工資表:也有二十條數(shù)據(jù),如下圖:

二、數(shù)據(jù)表關聯(lián)查詢時,如果連接沒有ON條件,會出現(xiàn)全部笛卡爾積

對于以上的兩張表,如果我們查詢

select * from employees, salary

結果為:

可以看出,一共出現(xiàn)了20*20=400條數(shù)據(jù)。即出現(xiàn)了全部笛卡爾積。

三、數(shù)據(jù)表關聯(lián)查詢時,如果ON條件字段是非唯一字段,會出現(xiàn)部分笛卡爾積

以上面的數(shù)據(jù)為例,如果我們以ejob字段進行連接的話,語句如下:

select * from employees, salary where employees.ejob=salary.ejob

結果為:

可以看出,由于ejob不是唯一字段,最終出現(xiàn)了36條結果,也就是出現(xiàn)了部分笛卡爾積。

四、如何才能不出現(xiàn)笛卡爾積的查詢結果

為避免出現(xiàn)查詢結果為笛卡爾積的冗余數(shù)據(jù)情況,應該在連接查詢時,使用唯一字段進行連接。


網(wǎng)頁題目:數(shù)據(jù)庫開發(fā)應知應會之笛卡爾積
分享網(wǎng)址:http://www.dlmjj.cn/article/dhpsoec.html