1樓:環柏
第乙個快。但是第二個如果改為如下:
select a.* from a where not exists(select id from b where ;
則兩個一樣快,測試資料如下:
728391 行受影響)
表 'b'。掃瞄計數 3,邏輯讀取 169 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'a'。掃瞄計數 3,邏輯讀取 1403 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'worktable'。掃瞄計數 0,邏輯讀取 0 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
728391 行受影響)
表 'b'。掃瞄計數 3,邏輯讀取 169 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'a'。掃瞄計數 3,邏輯讀取 1403 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
表 'worktable'。掃瞄計數 0,邏輯讀取 0 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。
2樓:水中月
應該前面的吧,你可以弄個有幾十萬條的資料表試一下就知道了。
3樓:網友
前一種!!後面那種是子查詢,子查詢也就是說進行多次查詢以得到條件或結果。
而後面一種是要時行兩次訪問資料庫的!!前一種只有一次!!
同乙個功能要求的sql語句可有不同實現方式,它們之間差別在**?
4樓:網友
區別在資料庫中生成的語法解析樹和執行計劃不同。
在資料庫中,sql語句首先會被語法分析解析成語法解析樹,此時不同的sql語句肯定不同,之後語法解析樹會被使用關係代數操作替換為邏輯執行計劃,每個語法解析樹都有對應的邏輯執行計劃。資料庫會進一步對邏輯執行計劃進行優化,產生執行代價小的邏輯執行計劃,此時,對於不同的sql語句,可能優化後的邏輯執行計劃是相同的,也可能是不同的。對於邏輯執行計劃,資料庫會根據統計資訊、索引情況,決定邏輯執行計劃中每個操作符的物理操作符,以及操作符的執行順序,生成最終的物理執行計劃。
不同的sql語句,一旦生成了不同的物理執行計劃,其執行效率將產生很大的差別,也就是獲得查詢結果的時間差別很大。
這兩條sql語句哪一條效能好,並說明理由
5樓:網友
不知道不要亂說,第二條效能好。
在資料量大(如10萬以上時)有明顯區別。
第一條語句是把a/b/c做連線查詢,假a/b/c三條的資料分別為條,則查詢結果實際是2*3*4=24條,然後從這24條中查詢'h'的那幾條。
第二條語句是查詢a表資料,但符合以下條件:從b表中能找到的記錄,只要找到一條就可,同時符合這個條件:在c表中能找到'h' and 的記錄,同時只要找到一條就成功。
理論上說第二條語句查詢時,在極端壞的情況下,會找2*3*4=24條中的若干條資料,但這種情況很少存在。這麼說,在查詢a表中的第一條資料時,看b表中有沒有的,如果b表第一條就符合,就不會檢查第二條,同理c表也是這個道理。
在能用exists的情況下,不用連線查詢,這是基本的道理。
在必須連線查詢時,如果只查子表的某乙個欄位,只做子查詢不做連線查詢。
怎麼合併兩個sql語句的查詢結果
select id 1,name 李某某 union all select 2,王某某union all select 2,王某某這樣合併不會去重 不要all 內部會有個去重操作 但是有all時後效率比沒all 高 select id,name from table1union select id,...
問sql語句怎麼寫。簡單點的。兩個表通過id關聯,查表時顯示另相關的某列,如果沒有就不顯示
select a.id,a.mingzi,isnull b.jiguan,as jiguan from a left join b on a.id b.id 效果如下圖 可以使用left join select a.isnull b.jiguan,as jiguan from a left join...
各位大神幫我看看這兩個配置哪個價效比更高一些
第一套是2014年的配置,第二套是2011年的配置,倆都淘汰很久,而且記憶體 固態都是山寨版,奸商坑爹標準配置,不建議選購!當然是圖1了。4代的酷睿i7處理器效能還是可以的。而圖2的還是2代的處理器,淘汰好久了。因cpu和底板已經有分別,單從價效比來說,才相差700,我會選 6,貴那款,但要看你實際...