色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql查詢in的用法,為什么MySQL的IN操作在大于3個操作數時不用索引

李中冰2年前25瀏覽0評論
mysql查詢in的用法,為什么MySQL的IN操作在大于3個操作數時不用索引?

1,從MySQL5.6版本開始,對where in做了優化,是走索引的,用EXPLAIN 分析你的SQL,你會發現type 都是 range,表示使用索引范圍查詢, 通過索引字段范圍獲取表中部分數據記錄。

2,在MySQL5.5版本中,where in雖然不會走索引,但該版本在下面這種情況下對where in是做了優化的,比如select * from a where I'd in (select a_id from b) 會優化為 select * from a where exists(select * from b where b.a_id=a.id);

exists 相關子查詢的執行原理是:循環取出 a 表的每一條記錄與 b 表進行比較,比較的條件是 a.id=b.id。看 a 表的每條記錄的 id 是否在 b 表存在,如果存在就行返回 a 表的這條記錄。