mysql什么时候用in,什么时候用exists
生活随笔
收集整理的這篇文章主要介紹了
mysql什么时候用in,什么时候用exists
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
寫在前面
給你答案
in
exists
結(jié)論
寫在前面
網(wǎng)上看帖子的時(shí)候,經(jīng)常會看到說盡量用exists,少用in。
那么問題來了,是所有場景下都盡量用exists嗎,還是具體場景具體分析。
給你答案
mysql做子查詢的時(shí)候,永遠(yuǎn)記得要小表驅(qū)動大表。
in
select * from A where id in (select id from B);
相當(dāng)于先循環(huán)B,再循環(huán)A。B表驅(qū)動A表。
也就是當(dāng)B表數(shù)據(jù)少于A表時(shí),用in最佳。
exists
select * from A where?exists?(select 1 from B where B.id=A.id);
相當(dāng)于先循環(huán)A,再循環(huán)B。A表驅(qū)動B表。
也就是當(dāng)A表數(shù)據(jù)少于B表時(shí),用exists最佳。
結(jié)論
其實(shí)in和exists都有其存在的必要性,雖然有時(shí)候用起來含義一樣,但是其效率是不一樣的,也不存在哪一個(gè)最好哪一個(gè)最差。
根據(jù)實(shí)際情況來判斷使用哪種方式
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的mysql什么时候用in,什么时候用exists的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学会用各种方式备份MySQL数据库
- 下一篇: order by、group by也会使