solr為什么比數(shù)據(jù)庫快 分析為什么mysql中l(wèi)ike模糊查詢效率低?
分析為什么mysql中l(wèi)ike模糊查詢效率低?與更新和插入相比,一般查詢應(yīng)該是數(shù)據(jù)庫中最頻繁的操作。在一些應(yīng)用場景中,需要使用like模糊查詢,所以對于大數(shù)據(jù),需要注意?,F(xiàn)在我們來分析一下為什么lik
分析為什么mysql中l(wèi)ike模糊查詢效率低?
與更新和插入相比,一般查詢應(yīng)該是數(shù)據(jù)庫中最頻繁的操作。在一些應(yīng)用場景中,需要使用like模糊查詢,所以對于大數(shù)據(jù),需要注意。
現(xiàn)在我們來分析一下為什么like語句的查詢效率很低。有400萬個測試數(shù)據(jù),如下圖所示:
第一步:不要使用索引
下圖顯示在不使用索引的情況下,普通查詢的時間消耗等于同類查詢的時間消耗,這也是不可避免的,因為它需要額外的算法。
第二步:使用索引
如下圖所示,使用索引后,平均查詢時間基本為秒,非??欤欢鴏ike查詢時間超過一秒。
第三步:分析原因
如下圖所示,使用解釋進行分析。此時,我們立即了解到普通查詢使用索引,但like語句不使用索引。
因此,MySQL中l(wèi)ike查詢效率低下的原因是在某些情況下,like查詢不能使用索引,會掃描整個表。
最后,讓我們添加like語句有時可以使用索引,如下圖所示。如果我們寫“l(fā)ike”DD when querying“”或者like”DD%”,這樣索引就可以使用了,此時的查詢速度會比較快。雖然它的速度快了一點,但是它仍然比普通的查詢要花費更多的時間。
因此,當(dāng)表中的數(shù)據(jù)量較大時,盡量不要使用like語句。如果你想做模糊搜索,建議使用搜索引擎,比如Solr,它的功能是like的n倍。