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