国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql 模糊查詢like優(yōu)化方案(親測)

這篇具有很好參考價(jià)值的文章主要介紹了mysql 模糊查詢like優(yōu)化方案(親測)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

本文的測試是基于740w條測試數(shù)據(jù)進(jìn)行的,只討論like模糊查詢的優(yōu)化方案。其他SQL優(yōu)化可參考:
SQL優(yōu)化的幾種方式

查詢開頭是“今天不開心”的聊天記錄,是可以走索引的。

select * from message_1 where content like "今天不開心%;

查詢包含“今天不開心”的聊天記錄,是不能走索引的。

select * from message_1 where content like "%今天不開心%";

咱們主要優(yōu)化的是第二種情況,我本人測試查詢耗時是在9秒。

優(yōu)化方案

對于查詢包含某個關(guān)鍵詞的需求,從業(yè)務(wù)上來說應(yīng)盡量避免這種不合理的需求。

但是實(shí)際使用中,總有些類似需求避免不掉模糊查詢,就可以采取下列優(yōu)化方式。

  • 稍微優(yōu)化
select * from message_1 where instr(content, "今天不開心") > 0;
select  * from message_1 where locate("今天不開心", content) > 0;

這個方法優(yōu)化效果有限,這兩種方法耗時相差不多,比不優(yōu)化要快上2~3秒。

我還測試了一些其他的一些情況,這種優(yōu)化方式,在某些情況下會比優(yōu)化前還要慢,由此可見這種方式是有坑的。

比如優(yōu)化前:

select content from message_1 where content like "%今天不開心%";

優(yōu)化后:

select content from message_1 where instr(content, "今天不開心") > 0;

select content from message_1 where locate("今天不開心", content) > 0;

這種情況,優(yōu)化后比不優(yōu)化要慢上2秒左右。。。。

  • 大幅度優(yōu)化
select * from message_1 where content in 
(select content from message_1 where content like "%今天不開心%");

這種方法,能將查詢優(yōu)化至3秒左右,優(yōu)化效果已經(jīng)很明顯。

優(yōu)化原理:用索引全掃描取代表的全掃描。因?yàn)樗饕珤呙璧拇鷥r(jià)是全表掃描的1/N (即索引塊數(shù)與數(shù)據(jù)塊數(shù)的比例),表數(shù)據(jù)越多,優(yōu)化效果越明顯。

優(yōu)化后的sql語句,根據(jù)索引再回表的代價(jià)要看符合條件的記錄數(shù)多少:如果in子查詢返回的記錄數(shù)很少,那么優(yōu)化的效果就相當(dāng)于效率提高了N倍;如果in子查詢返回的記錄數(shù)較多,兩種SQL的性能區(qū)別就不是很明顯了。

  • 根本優(yōu)化

使用ClickHouse 或者 Elasticsearch 同步數(shù)據(jù)庫。

這兩種方式可以從根本上解決模糊查詢的高延時,但是需要引入一套新的系統(tǒng),代價(jià)還是不小的。

二者的對比可參考:
Elasticsearch和Clickhouse基本查詢對比
ClickHouse 與es比較文章來源地址http://www.zghlxwxcb.cn/news/detail-401278.html

到了這里,關(guān)于mysql 模糊查詢like優(yōu)化方案(親測)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL中如何高效的實(shí)現(xiàn)模糊查詢(附30條優(yōu)化建議)

    在使用msyql進(jìn)行模糊查詢的時候,很自然的會用到like語句,通常情況下,在數(shù)據(jù)量小的時候,不容易看出查詢的效率,但在數(shù)據(jù)量達(dá)到百萬級,千萬級的時候,查詢的效率就很容易顯現(xiàn)出來。這個時候查詢的效率就顯得很重要! 一般情況下like模糊查詢的寫法為(field已建立索

    2024年01月22日
    瀏覽(32)
  • 【性能優(yōu)化】MySql數(shù)據(jù)庫查詢優(yōu)化方案

    【性能優(yōu)化】MySql數(shù)據(jù)庫查詢優(yōu)化方案

    了解系統(tǒng)運(yùn)行效率提升的整體解決思路和方向 學(xué)會MySQl中進(jìn)行數(shù)據(jù)庫查詢優(yōu)化的步驟 學(xué)會看慢查詢、執(zhí)行計(jì)劃、進(jìn)行性能分析、調(diào)優(yōu) ?關(guān)于這個問題,我們通常首先考慮的是硬件升級,畢竟服務(wù)器的內(nèi)存、CPU、磁盤IO速度 、網(wǎng)絡(luò)速度等都是制約我們系統(tǒng)快慢的首要因素。硬

    2024年02月03日
    瀏覽(26)
  • MySQL查詢優(yōu)化方案匯總(索引相關(guān))

    類型隱式轉(zhuǎn)換 大坑 大數(shù)據(jù)深度分頁,用主鍵 避免使用MySQL函數(shù) 避免類型的隱式轉(zhuǎn)換 避免使用函數(shù)或表達(dá)式,盡量只讓數(shù)據(jù)庫做純粹的增刪改查。 避免使用不等值做排除法 避免使用null值 減少大字段查詢,避免使用*,不說磁盤io的損耗,連網(wǎng)絡(luò)帶寬都跟著損耗。 如果只sel

    2024年03月09日
    瀏覽(20)
  • Mysql如何優(yōu)化數(shù)據(jù)查詢方案

    Mysql如何優(yōu)化數(shù)據(jù)查詢方案

    mysql做讀寫分離 讀寫分離是提高mysql并發(fā)的首選方案。 Mysql主從復(fù)制的原理 mysql的主從復(fù)制依賴于binlog,也就是記錄mysql上的所有變化并以二進(jìn)制的形式保存在磁盤上,復(fù)制的過程就是將binlog中的數(shù)據(jù)從主庫傳輸?shù)綇膸焐稀?主從復(fù)制過程詳細(xì)分為3個階段: 第一階段:主庫寫

    2024年02月21日
    瀏覽(19)
  • MySQL ——多條件查詢(like)

    MySQL ——多條件查詢(like)

    MySQL LIKE多條件查詢語句的基本語法如下: ? ? ? ? 在上面的多條件查詢語句中,%是通配符,表示任意字符。如果您在LIKE語句中使用%字符,則表示查詢結(jié)果將返回具有指定值的任何字符。因此,以上語句將返回同時在column1和column2中具有value1和value2的所有行。此外,如果您在

    2024年02月03日
    瀏覽(18)
  • 微信小程序 連接云數(shù)據(jù)庫(不使用云函數(shù))進(jìn)行 登錄、注冊、查詢(包括模糊查詢)快速實(shí)現(xiàn) 親測可用

    微信小程序 連接云數(shù)據(jù)庫(不使用云函數(shù))進(jìn)行 登錄、注冊、查詢(包括模糊查詢)快速實(shí)現(xiàn) 親測可用

    當(dāng)連接MySQL的時候總是出現(xiàn)各種各樣的小問題,可以選用微信小程序自帶的云數(shù)據(jù)庫 注:測試號不能建立云數(shù)據(jù)庫 按圖中步驟來 第4步中,有兩種添加方式 第一種 第二種 注意: 如果你是粘貼復(fù)制的,他會報(bào)錯 非數(shù)字字符\\\"無法使用外部字符串表示法位于第1行 。這時,在第

    2023年04月20日
    瀏覽(26)
  • elasticsearch7.17.3 實(shí)現(xiàn)類似mysql的like查詢

    前言:現(xiàn)在想要實(shí)現(xiàn)在elasticsearch中類似于mysql的like查詢方式,有下面幾種方法可以參考 建議 :wildcard方法是純純的like查詢方式平替,但是性能差,上百GB的數(shù)據(jù)量后就會很慢。根據(jù)自己業(yè)務(wù)量需求,前面兩種方式能解決的情況下盡量用前面兩種方式。前兩種方式可以修改索

    2024年02月08日
    瀏覽(26)
  • springboot整合elasticsearch實(shí)現(xiàn)類似于mysql的like查詢

    目錄 一、ES分頁查詢常用方式 二、引入es的依賴 三、es配置文件 四、es工具類 五、分頁查詢示例 1.from + size from表示從第幾行開始,size表示查詢多少條文檔。from默認(rèn)為0,size默認(rèn)為10,最靈活的分頁方式。 2.scroll 不適合用來做實(shí)時搜索,而更適用于后臺批處理任務(wù),如日志導(dǎo)

    2023年04月09日
    瀏覽(19)
  • 大數(shù)據(jù)量模糊查詢優(yōu)化(流去重,流分批,建樹操作)

    有時候會進(jìn)行大數(shù)據(jù)量查詢后的建樹操作,如果直接使用sql語句會大大延緩業(yè)務(wù)效率,因此需要優(yōu)化,本文章介紹了使用java8流操作以及hutool樹工具欄的建樹操作。 流是支持各種方法的對象序列(一系列對象,列入:LIst對象) 代碼如下(示例): 代碼如下(示例): 代碼如

    2024年02月13日
    瀏覽(21)
  • ES模糊查詢失效的坑,附解決方案

    ES模糊查詢失效的坑,附解決方案

    最近在做需求開發(fā)的時候,有個需求,需要根據(jù)去ES中進(jìn)行模糊搜索。于是首先想到了wildcard查詢,根據(jù),利用*通配符,類似于mysql中的like一樣進(jìn)行模糊搜索。 但是遇到了問題就是,根據(jù)單個漢字能正常模糊搜索,多個漢字就無法查詢出數(shù)據(jù)。 單個漢字正常查詢

    2024年02月11日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包