1. 程式人生 > >分析為什麼mysql中like模糊查詢效率低

分析為什麼mysql中like模糊查詢效率低

相比update和insert,一般查詢應該是資料庫中操作最頻繁的。而在有些應用場景需要用到like模糊查詢,那麼對於大資料,查詢的時候就要注意了。

現在來分析一下為什麼like語句查詢的效率會很低,測試資料共4000000條,如下圖:

總共的條數

第一步:不使用索引

下圖可以看出,不使用索引的時候普通查詢與like查詢的耗時相當,like略長,這也是必然的,因為它要進行額外的演算法。

like不使用索引

第二步:使用索引

如下圖,使用索引後,普通查詢的耗時基本算是秒查,非常快;而like查詢還是耗時一秒多。

like使用索引的效果

第三步:分析原因

如下圖,用explain分析一下,此時我們立刻明白了,普通查詢用到了索引,但是like語句沒有用到索引。

like用不到索引

所以,照成mysql中like查詢效率低下的原因是:

在有些情況下,like查詢使用不到索引,會掃描全表。

最後,補充一下,like語句有時候也是可以用到索引的,如下圖,如果我們查詢的時候寫成“like 'dd_'或者like 'dd%'”,這樣是可以用到索引的,此時的查詢速度也會相對的快一點。雖然快了一點,但是還是比普通查詢耗時要多很多。

like可以使用到索引

因此,當表的資料量比較大的時候,儘量還是不要用like語句了。如果想做模糊搜尋,建議用搜索引擎,比如solr,這樣會比like強大n倍。