Mysql數(shù)據庫使用from與join兩表查詢的方法區(qū)別總結
文章主要給大家介紹了關于mysql使用from與join兩表查詢的區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面...
前言
在mysql中,多表連接查詢是很常見的需求,在使用多表查詢時,可以from多個表,也可以使用join連接連個表
這兩種查詢有什么區(qū)別?哪種查詢的效率更高呢? 帶著這些疑問,決定動手試試
1.先在本地的mysql上先建兩個表one和two
one表
CREATETABLE`one` (`id`int(0)NOTNULLAUTO_INCREMENT,`one`varchar(100)NOTNULL,PRIMARYKEY(`id`)) ENGINE = InnoDBCHARACTERSET= utf8;
two表
CREATETABLE`two` (`id`int(0)NOTNULLAUTO_INCREMENT,`two`varchar(100)NOTNULL,PRIMARYKEY(`id`)) ENGINE = InnoDBCHARACTERSET= utf8;
先隨便插入幾條數(shù)據,查詢看一下;
selectone.id,one.one,two.id,two.twofromone,twowhereone.id=two.id;

selectone.id,one.one,two.id,two.twofromonejointwoonone.id=two.id;

對比這兩次的查詢,查詢時間幾乎沒有區(qū)別,查看sql運行分析,也沒有區(qū)別
為了突出兩種查詢的性能差異,往one表中插入100w條數(shù)據,往two表中插入10w條數(shù)據,在大量數(shù)據面前,一絲一毫的差別也會被無限放大;這時候在來比較一下差異
先使用python往數(shù)據庫中插入數(shù)據,為啥用python,因為python寫起了簡單
上代碼
import pymysql
db = pymysql.connect("127.0.0.1",'root',"123456","bruce")cursor= db.cursor()
sql ="INSERT INTO one (one) values (%s)"foriinrange(1000000):cursor.executemany(sql, ['one'+ str(i)])if i % 10000 == 0:db.commit()print(str(i) +'次 commit')db.commit()
print('insert one ok')sql2 ="INSERT INTO two (two) values (%s)"foriinrange(100000):cursor.executemany(sql2, ['two'+ str(i)])if i % 10000 == 0:db.commit()print(str(i) +'次 commit')db.commit()print('insert two ok')
耐心等待一會,插入需要一些時間;
等數(shù)據插入完成,來查詢一些看看
先使用FROM兩個表查詢
selectone.id,one.one,two.id,two.twofromone,twowhereone.id=two.id;

用時大約20.49;
再用JOIN查詢看一下
selectone.id,one.one,two.id,two.twofromonejointwoonone.id=two.id;

用時19.45,在10w條數(shù)據中,1秒的誤差并不算大,
查看一下使用id作為條件約束時的查詢


  查詢時間沒有差別
  再看一下sql執(zhí)行分析


結果還是一樣的
總結
在mysql中使用FROM查詢多表和使用JOIN連接(LEFT JOIN,RIGHT JOIN除外),查詢結果,查詢效率是一樣的
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值。
- Sql Server數(shù)據庫類似正則表達式的字符處理問題
- SQL Server數(shù)據庫中表和索引結構存儲的原理及如何加快
- SQL Server Page數(shù)據庫結構深入分析
- 基于Sql server數(shù)據庫的四種分頁方式總結
- SQL Server 2016數(shù)據庫快照代理過程詳解
- 關于SQL Serve數(shù)據庫r帳號被禁用的處理方法
- SQL數(shù)據庫查詢優(yōu)化技巧提升網站訪問速度的方法
- SQL數(shù)據庫開發(fā)中的SSIS 延遲驗證方法
- SQL Server數(shù)據庫建立新用戶及關聯(lián)數(shù)據庫的方法教程
- Oracle數(shù)據庫多條sql執(zhí)行語句出現(xiàn)錯誤時的控制方式
  - Sql Server數(shù)據庫類似正則表達式的字符處理問題- SQL Serve提供了簡單的字符模糊匹配功能,比如:like, patindex,不過對于某些字符處理場景還顯得并不足夠,日常碰到的幾個問題有:... 
  - SQL Server數(shù)據庫中表和索引結構存儲的原理及如何加快搜索速度分析- 本文詳細分析了SQL Server中表和索引結構存儲的原理以及對于如何加快搜索速度和提高效率等方面做了詳細的分析,以下是主要內容。... 
  - SQL Server Page數(shù)據庫結構深入分析- SQL Server存儲數(shù)據的基本單元是Page,每一個Page的大小是8KB,數(shù)據文件是由Page構成的。在同一個數(shù)據庫上,每一個Page都有一個唯一的資源標識,標識符由三部分組成... 
  - 基于Sql server數(shù)據庫的四種分頁方式總結- 下面小編就為大家分享一篇基于sqlserver的四種分頁方式總結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧。... 
  - SQL Server 2016數(shù)據庫快照代理過程詳解- 本文我們通過SQL Server 2016一個實例數(shù)據表,給大家詳細分析了快照代理過程遇到的問題和解決辦法,并對快照生成過程做了詳細說明,以下是全部內容:... 
  - 關于SQL Serve數(shù)據庫r帳號被禁用的處理方法- 若發(fā)現(xiàn)SQL Serve所有帳號不小心被禁用了,這個時候怎么辦?用重裝嗎?不用,仔細看小白是怎么一步一步解開這個謎題的。首先需要Windows帳號設置里重新添加一個新帳號。并將其添加到... 
  - SQL數(shù)據庫查詢優(yōu)化技巧提升網站訪問速度的方法- 在這篇文章中,我將介紹如何識別導致性能出現(xiàn)問題的查詢,如何找出它們的問題所在,以及快速修復這些問題和其他加快查詢速度的方法?! ∧阋欢ㄖ溃粋€快速訪問的網站能讓用... 
  - SQL數(shù)據庫開發(fā)中的SSIS 延遲驗證方法- 驗證是一個事件,該事件在Package執(zhí)行時,第一個被觸發(fā),驗證能夠避免SSIS引擎執(zhí)行一個有異常的Package或Task。延遲驗證(DelayValidation)是把驗證操作延遲到Package真正運行(run-ti... 
  - SQL Server數(shù)據庫建立新用戶及關聯(lián)數(shù)據庫的方法教程- 本文講的是SQLserver數(shù)據庫創(chuàng)建新用戶方法以及賦予此用戶特定權限的方法,非常的簡單實用,有需要的小伙伴可以參考下... 
  - Oracle數(shù)據庫多條sql執(zhí)行語句出現(xiàn)錯誤時的控制方式- 多條sql執(zhí)行時如果在中間的語句出現(xiàn)錯誤,后續(xù)會不會直接執(zhí)行,如何進行設定,以及其他數(shù)據庫諸如Mysql是如何對應的,這篇文章將會進行簡單的整理和說明。環(huán)境準備使用Oracle的精簡... 

