批量select in 和 單一的查詢然後根據查詢結構進行去重的比較

這裏需要用到mysql的執行計劃,小夥伴可以先了解一下mysql如何查看執行計劃,參考鏈接:https://blog.csdn.net/wuseyukui/article/details/71512793

 

explain 執行計劃,在所需要查看的sql語句下執行這句話

單一的利用索引查詢一個  數據庫 20W

explain  select * from table as a where a.key='9e5ecc16a0a714eee55c2adb6e6c550a';

返回的結果就是

select_type = SIMPLE 表示是普通查詢,沒有嵌套查詢等

type = ref  表示使用的是不是唯一索引的索引

key 表示的是使用的是索引的key

key_len  表示索引使用的字節數,越少越好

執行時間30ms  

使用in 來批量查詢,數據庫20W

explain select * from table as a 
where a.key in ('32836c57ed74063acf08c7f0318cdaf6','a68e9519e1748c84cfcaf3ba093e73f6','9e5ecc16a0a714eee55c2adb6e6c550a');

執行結果

select_type = simple  普通查詢

type = range 只檢索給定範圍的行,使用一個索引來選擇行。key列顯示使用了那個索引

key 表示使用的index的key

EXtra Using index condition  是5.6的新特性表示會先條件過濾索引,過濾完索引後找到所有符合索引條件的數據行,隨後用 WHERE 子句中的其他條件去過濾這些數據行;

執行時間 平均40ms

總結:

如何批量查詢不是特別多的話,使用select in 可以提高點時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章