日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【性能】模糊查询性能提升

發布時間:2024/10/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【性能】模糊查询性能提升 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、常見用法:

(1)搭配%使用

%代表一個或多個字符的通配符,譬如查詢字段name中以大開頭的數據:

(2)搭配_使用

_代表僅僅一個字符的通配符,把上面那條查詢語句中的%改為_,會發現只能查詢出下面一條數據:

2、使用like模糊查詢會導致索引失效,在數據量大的時候會有性能問題

(1)盡量少以%或者_開頭進行模糊查詢

通過explain執行計劃,我們發現,使用like模糊查詢時,如果不以%和_開頭查詢的話,索引還是有效的

以%或者_開頭查詢,索引失效

??

(2)使用覆蓋索引

當查詢的的條件和查詢的結果都是索引中的字段的時候,這個索引我們可以稱之為覆蓋索引,這個時候,使用like模糊查詢索引是有效的

InnoDB中主鍵可以不添加進索引中

注意:使用覆蓋索引,對于字段的長度是由要求限制的,一般超過長度,索引也會失效

這里如果我查詢中帶有descripition字段,則覆蓋索引也會失效(我這里的數據庫經過測試最多只支持255長度的字段)

(3)使用全文索引

給字段建立Full Text索引,然后使用match(...) against(...)進行檢索
?

注意:這種全文索引方式只對英文單詞起作用,對于中文漢字支持不夠友好,并且分詞有時候不是很準確,除非有明顯的分隔符,需要額外去mysql的配置文件做一些配置修改,讓它額外支持中文

(4)使用一些額外的全文搜索引擎來解決

Lucene,solr,elasticsearch等等

基本原理是:把mysql配置文件中的ft_min_word_len=3改為1。(沒有這項就直接添加),然后新建一個字段來保持分詞結果,給這個字段建立全文索引。然后實現一個分詞模塊,把詞語“大家好”拆分為“大 大家 大家好 家 家好 好”。然后用match .. against 來代替like %%,查詢出來的結果跟like的結果基本相同(如果分詞合理的話),但是效率比like高至少10倍以上。

總結

以上是生活随笔為你收集整理的【性能】模糊查询性能提升的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。