這裏需要用到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