第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL連接與SQL子查詢(性能)?

SQL連接與SQL子查詢(性能)?

繁星淼淼 2019-10-25 10:26:54
我想知道我是否有類似這樣的聯(lián)接查詢-Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id和一個類似這樣的子查詢 -Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept)當(dāng)我考慮性能時,兩個查詢中哪個查詢會更快,為什么?還有一段時間我應(yīng)該優(yōu)先選擇另一個嗎?抱歉,這太瑣碎了,之前問過,但是對此我感到困惑。另外,如果你們能建議我一些我可以用來衡量兩個查詢性能的工具,那將是很棒的。非常感謝!
查看完整描述

3 回答

?
子衿沉夜

TA貢獻(xiàn)1828條經(jīng)驗 獲得超3個贊

我希望第一個查詢更快,主要是因為您有一個等效項和一個顯式的JOIN。以我的經(jīng)驗,IN運(yùn)算符非常慢,因為SQL通常將其評估為一系列WHERE由“ OR”(WHERE x=Y OR x=Z OR...)分隔的子句。

與ALL THINGS SQL一樣,您的里程可能會有所不同。速度很大程度上取決于索引(您是否在兩個ID列上都有索引?這將有很大幫助...)。

唯一可以百分百確定哪個更快的真實方法是打開性能跟蹤(IO Statistics特別有用)并同時運(yùn)行它們。確保在兩次運(yùn)行之間清除緩存!


查看完整回答
反對 回復(fù) 2019-10-25
?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗 獲得超3個贊

好吧,我相信這是一個“古老而又黃金”的問題。答案是:“取決于!”。表演是如此精致,以至于說:“從不使用子查詢,總是加入”,這太愚蠢了。在以下鏈接中,您會發(fā)現(xiàn)一些我發(fā)現(xiàn)非常有幫助的基本最佳實踐:


優(yōu)化子查詢

使用半聯(lián)接轉(zhuǎn)換優(yōu)化子查詢

將子查詢重寫為聯(lián)接

我有一個包含50000個元素的表,我想要的結(jié)果是739個元素。


我最初的查詢是這樣的:


SELECT  p.id,

    p.fixedId,

    p.azienda_id,

    p.categoria_id,

    p.linea,

    p.tipo,

    p.nome

FROM prodotto p

WHERE p.azienda_id = 2699 AND p.anno = (

    SELECT MAX(p2.anno) 

    FROM prodotto p2 

    WHERE p2.fixedId = p.fixedId 

)

執(zhí)行時間為7.9秒。


我的查詢最后是這樣的:


SELECT  p.id,

    p.fixedId,

    p.azienda_id,

    p.categoria_id,

    p.linea,

    p.tipo,

    p.nome

FROM prodotto p

WHERE p.azienda_id = 2699 AND (p.fixedId, p.anno) IN

(

    SELECT p2.fixedId, MAX(p2.anno)

    FROM prodotto p2

    WHERE p.azienda_id = p2.azienda_id

    GROUP BY p2.fixedId

)

花了0.0256秒


好的SQL,好的。


查看完整回答
反對 回復(fù) 2019-10-25
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗 獲得超9個贊

開始查看執(zhí)行計劃,以了解SQl Server將如何解釋它們的差異。您還可以使用Profiler實際多次運(yùn)行查詢并獲得差異。


我不希望它們有如此可怕的區(qū)別,當(dāng)您使用關(guān)聯(lián)子查詢時,使用連接而不是子查詢可以真正獲得較大的性能提升。


EXISTS通常比這兩個中的任何一個都要好,并且當(dāng)您要在左連接中要所有記錄都不在左連接表中時,使用NOT EXISTS通常是更好的選擇。


查看完整回答
反對 回復(fù) 2019-10-25
  • 3 回答
  • 0 關(guān)注
  • 1614 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號