MySQL IN 查詢優化

2021-08-28 11:01:18 字數 837 閱讀 5374

前幾天看到一篇博文將 in 子查詢 優化為 left join 的問題,今天自己測試測試。

資料表為 test_item 和 test_item_tag 兩個表

test_item:兩個字段 item_id[char(36)], release_time[int(11)],共10w條記錄

test_item_tag:三個字段 id, item_d, tag_id,共64w條記錄

select item_id, tag_id from test_item_tag where item_id in

(select item_id from test_item where release_time > 1537373044)

查詢到 14 w條記錄共 1.48 秒

select a.item_id, a.tag_id from test_item_tag a inner join 

(select item_id from test_item where release_time > 1537373044) b

on a.item_id = b.item_id

耗時共 1.54 秒

##3、left join

select b.item_id, b.tag_id from 

(select item_id from test_item where release_time > 1537373044) a

left join test_item_tag b on a.item_id = b.item_id

很久很久沒有跑出結果,放棄了

mysql in 後子查詢優化

線上資料發現一條資料大量等待的現象,通過explain發現這個sql寫法存在問題,這裡簡單記錄一下.業務場景是這樣 存在購物車和費用兩張表,購物車資料是購買商品時生成,用於記錄購買商品資料,同時購買的商品也會生成費用表,用於統計商品總的支出情況 相當於訂單 購物車和費用的關係是多對一,通過gg gw...

mysql in效能優化 MySQL 查詢效能優化

在日常開發中,程式設計師寫的最多的除了bug之外,應該算是sql語句了。sql的質量影響了程式的響應速度,只有利用mysql的特性,才能讓mysql更有效的執行查詢sql,充分發揮mysql的優勢,並避開它的弱點。為什麼查詢速度會慢?在編寫sql之前,需要清楚一點 真正重要的是響應時間。如果我們把查...

mysql in語句優化

mysql會對sql語句做優化,in 後面的條件不超過一定數量仍然會使用索引。mysql 會根據索引長度和in後面條件數量判斷是否使用索引。另外,如果是in後面是子查詢,則不會使用索引。乙個文章庫,裡面有兩個表 category和article。category裡面有10條分類資料。article裡...