SQL中笛卡爾積的實際應用
1.概念
百度百科:
笛卡爾乘積是指在數學中,兩個集合X和Y的笛卡爾積(Cartesian product),又稱直積,表示為X × Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員
百度百科有點繞,定義自己解釋自己,意思大概是這個意思,可以簡單理解成兩個集合的乘積
2.sql笛卡爾積語法
select * from table1,table2
其中table1和table2 分別表示兩個表的表名
示例:
2.1 表1有2條數據
2.2 表2有3條數據
2.3 笛卡爾積有6條數據
從行和列兩個維度來觀察上例笛卡爾積的結果集可以發(fā)現,
結果集的行是表1的行數乘表2的行數(2x3)
結果集的列是表1的列加表2的列(3+4)
3.sql中的應用
3.1 高中數學集合中有介紹交集、并集、差集、笛卡爾積,一個sql語句可以理解成一個結果集,多個表的關聯(lián)查詢底層實際上是數學中集合和集合的關系。
進一步可以發(fā)現笛卡爾積和內連接的sql語句可以相互轉化,這對我們理解內連接的本質和笛卡爾積的查詢條件很重要
內連接也可以得到2.3笛卡爾積的結果
3.2 笛卡爾積加查詢條件
轉化成內連接查詢
總結
從結果上來看:內連接不加關聯(lián)條件的結果就是笛卡爾積
從執(zhí)行效率和底層實現來看,內連接和笛卡爾積有區(qū)別,內連接會先通過on條件過濾兩張表的數據,再取交集;笛卡爾積會先將兩個表取乘積再過濾數據,所以理論上內連接效率更高
笛卡爾積在表數據量大的情況下查詢結果會倍增,實際應用中要加查詢條件過濾數據
怎么理解笛卡爾積中的查詢條件,可以將笛卡爾積sql轉化成內連接sql去理解
到此這篇關于SQL中笛卡爾積的文章就介紹到這了,更多相關SQL中笛卡爾積內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot連接MySQL獲取數據寫后端接口的操作方法
今天通過本文給大家介紹SpringBoot連接MySQL獲取數據寫后端接口的操作方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-11-11MySQL中使用SHOW PROFILE命令分析性能的用法整理
這篇文章主要介紹了MySQL中使用show profile命令分析性能的用法整理,show profiles是數據庫性能優(yōu)化的常用命令,需要的朋友可以參考下2015-11-11MySQL中實現高性能高并發(fā)計數器方案(例如文章點擊數)
這篇文章主要介紹了MySQL中實現高性能高并發(fā)計數器方案,本文中的計數器是指如文章的點擊數、喜歡數、瀏覽次數等,需要的朋友可以參考下2014-10-10