為什麼子查詢比連線查詢(LEFT JOIN)效率低

2021-10-06 04:20:42 字數 405 閱讀 7411

mysql從4.1版本開始支援子查詢,使用子查詢進行select語句巢狀查詢,可以一次完成很多邏輯上需要多個步驟才能完成的sql操作。子查詢雖然很靈活,但是執行效率並不高。

那麼問題來了,什麼是子查詢?為什麼它的效率不高?

子查詢:把內層查詢結果當作外層查詢的比較條件

示例:select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);

執行子查詢時,mysql需要建立臨時表,查詢完畢後再刪除這些臨時表,所以,子查詢的速度會受到一定的影響,這裡多了乙個建立和銷毀臨時表的過程。

優化方式:

可以使用連線查詢(join)代替子查詢,連線查詢不需要建立臨時表,因此其速度比子查詢快。

MyISAM查詢速度為什麼比InnoDB快

innodb mylsam兩者引擎所用的索引的資料結構都是b 樹,不過區別在於 mylsam中的b 樹的資料結構儲存的內容是實際資料的位址值,它的索引和實際資料是分開的,只不過使用索引指向實際資料,這種索引的模式被成為非聚集索引。innodb中b 樹的資料結構儲存的都是實際的資料,這種索引稱為聚集索...

效能優化 陣列查詢為什麼比煉表快?

1 定址操作次數鍊錶要多一些。陣列只需對 基位址 元素大小 k 就能找到第k個元素的位址,對其取位址就能獲得該元素。鍊錶要獲得第k個元素,首先要在其第k 1個元素尋找到其next指標偏移,再將next指標作為位址獲得值,這樣就要從第乙個元素找起,多了多步定址操作,當資料量大且其它操作較少時,這就有差...

為什麼多 TCP 連線比單 TCP 連線傳輸快

tcp特性使得每個tcp連線可以得到均等的頻寬。在多使用者環境下,乙個使用者擁有越多tcp連線,獲得的頻寬越大。具體來說 這個涉及到了tcp的擁塞控制。我們先看一下單tcp連線的擁塞控制。綠色部分為傳送者已傳送,且接收者已確認 acked 黃色部分為傳送者已傳送,但接收者尚未確認 in flight...