mysql中l(wèi)ike模糊查詢 分析為什么mysql中l(wèi)ike模糊查詢效率低?
分析為什么mysql中l(wèi)ike模糊查詢效率低?與更新和插入相比,一般查詢應(yīng)該是數(shù)據(jù)庫中最頻繁的操作。在一些應(yīng)用場景中,需要使用like模糊查詢,所以對(duì)于大數(shù)據(jù),需要注意?,F(xiàn)在我們來分析一下為什么lik
分析為什么mysql中l(wèi)ike模糊查詢效率低?
與更新和插入相比,一般查詢應(yīng)該是數(shù)據(jù)庫中最頻繁的操作。在一些應(yīng)用場景中,需要使用like模糊查詢,所以對(duì)于大數(shù)據(jù),需要注意。
現(xiàn)在我們來分析一下為什么like語句的查詢效率很低。有400萬個(gè)測試數(shù)據(jù),如下圖所示:
第一步:不要使用索引
下圖顯示在不使用索引的情況下,普通查詢的時(shí)間消耗等于同類查詢的時(shí)間消耗,這也是不可避免的,因?yàn)樗枰~外的算法。
第二步:使用索引
如下圖所示,使用索引后,平均查詢時(shí)間基本為秒,非常快;而like查詢時(shí)間超過一秒。
第三步:分析原因
如下圖所示,使用解釋進(jìn)行分析。此時(shí),我們立即了解到普通查詢使用索引,但like語句不使用索引。
因此,MySQL中l(wèi)ike查詢效率低下的原因是在某些情況下,like查詢不能使用索引,會(huì)掃描整個(gè)表。
最后,讓我們添加like語句有時(shí)可以使用索引,如下圖所示。如果我們寫“l(fā)ike”DD when querying“”或者like”DD%”,這樣索引就可以使用了,此時(shí)的查詢速度會(huì)比較快。雖然它的速度快了一點(diǎn),但是它仍然比普通的查詢要花費(fèi)更多的時(shí)間。
因此,當(dāng)表中的數(shù)據(jù)量較大時(shí),盡量不要使用like語句。如果你想做模糊搜索,建議使用搜索引擎,比如Solr,它的功能是like的n倍。
mysql模糊查詢顯示某一字段太長?
1. 常規(guī)查詢語句:從“Caijiuym”查詢數(shù)據(jù)中選擇“l(fā)content”:2。有時(shí)需要查詢字段的長度來顯示數(shù)據(jù):SQL語句:從“Caiji_uym_uuiyan”中選擇“l(fā)content”`where
長度(lcontent)<=40
PS:在mysql中,一個(gè)漢字等于三個(gè)字節(jié),因此在查詢時(shí)需要對(duì)其進(jìn)行轉(zhuǎn)換
尤其要注意字節(jié)的轉(zhuǎn)換