前幾天看到一篇博文將 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裡...