最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql如何讓左模糊查詢也能走索引

 更新時(shí)間:2022年11月21日 17:02:13   作者:紳士jiejie  
這篇文章主要介紹了mysql如何讓左模糊查詢也能走索引,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

讓左模糊查詢也能走索引

測(cè)試表USER_INFO表數(shù)據(jù)以及結(jié)構(gòu)如下

有一個(gè)USER_NAME字段的索引

有個(gè)業(yè)務(wù)需求,需要模糊搜索出用戶名后幾位有杰這個(gè)詞的所有用戶信息,這時(shí)候不可能說(shuō)為了一個(gè)搜索就引入ES,但是如果sql使用左模糊查詢的話,根據(jù)索引的最左匹配原則,該sql語(yǔ)句是不可能使用到idx_user_name索引的,如下:

EXPLAIN SELECT * from USER_INFO where USER_NAME like '%杰'

執(zhí)行計(jì)劃如下:

可以發(fā)現(xiàn)是用不到索引的。

需要做模糊匹配,又要用到索引,索引的最左匹配原則更是不能被打破,這時(shí)候可以增加一個(gè)字段,這個(gè)字段的內(nèi)容等于USER_NAME字段內(nèi)容的反轉(zhuǎn),同時(shí)加上這個(gè)字段的相關(guān)索引,如下:

此時(shí)如果是要模糊搜索出用戶名后幾位有杰這個(gè)詞的所有用戶信息,可以對(duì)REVERSE_USER_NAME字段做右模糊查詢,效果其實(shí)就是和對(duì)USER_NAME字段做左模糊查詢是一樣的,因?yàn)槎叩膬?nèi)容是相反的,結(jié)果如下:

SELECT * from USER_INFO where REVERSE_USER_NAME like '杰%'

執(zhí)行計(jì)劃如下:

小結(jié)一下:索引的最左匹配原則不能打破,那么要讓左匹配也走索引的話,換個(gè)思路,讓右匹配的效果和左匹配一樣就好了,同時(shí)右匹配又能走索引,間接達(dá)到了左模糊查詢也能走索引的目的。

模糊查詢(like、instr)

SQL中經(jīng)常會(huì)遇到模糊查詢,現(xiàn)在模糊查詢正常、最常用的有兩種,一種是like、另一種是instr,這兩種單單是簡(jiǎn)單的搜索,instr的效率是比like要高的(這也得看%在哪兒了)。

1. like

like中分右模糊、左模糊,右模糊比如’abc%‘時(shí),掃描索引,高效。當(dāng)模糊查詢含左模糊時(shí),比如’%abc’,進(jìn)行全表掃描,低效。當(dāng)然更別提’%abc%'了。

2. instr

instr(字段名, string),instr的使用也很簡(jiǎn)單,就是填寫(xiě)一下字段名,然后與后面需要查找的內(nèi)容相關(guān)。這個(gè)比like的左模糊效率要高,但是要比右模糊還是相差不多的(因?yàn)樵趇nstr不分左右模糊)。

3. A>=’’ and A<’’

今天在搜索查找之時(shí)還找到了這么一個(gè)查找方法,這個(gè)方法要比上面的instr效率還要高,不過(guò)這個(gè)方法局限性還是比較高的。例如:

select * from formtable_main_200_dt1 where hth >= '16040610' and hth < '16040611'

這個(gè)方法只適用于字符型字段,且除了我們想要的字段外,還得加上一個(gè)超過(guò)此類型的,并且他只支持右模糊。但是在這幾個(gè)當(dāng)中就右模糊而言,他的效率是最高的。

3的補(bǔ)充講解

在數(shù)據(jù)中進(jìn)行字符的比較時(shí)發(fā)現(xiàn)自己并不是對(duì)此了解,這里記下這里字符的比較是比較的哪里。

這里的比較是比較的ASCII,但這不是比較的總的ASCII,而是一個(gè)字符一個(gè)字符的比較,例如我這里有數(shù)據(jù)庫(kù)的字段為’123456123’,而要比較的還有’123456223’,這里進(jìn)行比較,當(dāng)?shù)搅?1的1和62的2時(shí)就可以比較出大小了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql多個(gè)left join連接查詢用法分析

    mysql多個(gè)left join連接查詢用法分析

    這篇文章主要介紹了mysql多個(gè)left join連接查詢用法,結(jié)合實(shí)例形式對(duì)比分析了mysql使用left join進(jìn)行連接查詢相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-07-07
  • 利用MySQL統(tǒng)計(jì)一列中不同值的數(shù)量方法示例

    利用MySQL統(tǒng)計(jì)一列中不同值的數(shù)量方法示例

    這篇文章主要給大家介紹了利用MySQL統(tǒng)計(jì)一列中不同值的數(shù)量的幾種解決方法,每種方法都給了詳細(xì)的示例代碼供大家參考學(xué)習(xí),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面跟隨小編一起來(lái)看看吧。
    2017-04-04
  • MySQL避免索引失效的方法示例

    MySQL避免索引失效的方法示例

    索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),本文主要介紹了MySQL避免索引失效的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • MySQL連接異常報(bào)10061錯(cuò)誤問(wèn)題解決

    MySQL連接異常報(bào)10061錯(cuò)誤問(wèn)題解決

    這篇文章主要介紹了MySQL連接異常報(bào)10061錯(cuò)誤問(wèn)題解決,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MySQL?去重實(shí)例操作詳解

    MySQL?去重實(shí)例操作詳解

    這篇文章主要介紹了MySQL?去重實(shí)例操作詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • 一文詳解如何查看電腦是否安裝了mysql

    一文詳解如何查看電腦是否安裝了mysql

    這篇文章主要給大家介紹了關(guān)于如何查看電腦是否安裝了mysql的相關(guān)資料,如果你想使用MySQL,必須首先確保它已安裝在你的計(jì)算機(jī)上,需要的朋友可以參考下
    2023-10-10
  • MySQL 數(shù)據(jù)庫(kù)函數(shù)庫(kù)

    MySQL 數(shù)據(jù)庫(kù)函數(shù)庫(kù)

    MySQL 數(shù)據(jù)庫(kù)函數(shù)庫(kù)...
    2006-12-12
  • MySQL中JSON_CONTAINS用法、語(yǔ)法、示例及其應(yīng)用場(chǎng)景

    MySQL中JSON_CONTAINS用法、語(yǔ)法、示例及其應(yīng)用場(chǎng)景

    這篇文章主要介紹了MySQL中JSON_CONTAINS用法、語(yǔ)法、示例及其應(yīng)用場(chǎng)景的相關(guān)資料,JSON_CONTAINS函數(shù)用于檢查JSON文檔是否包含特定值或?qū)ο?這個(gè)函數(shù)非常適合于處理嵌套的JSON數(shù)據(jù)和靈活的查詢需求,需要的朋友可以參考下
    2024-10-10
  • Mysql?InnoDB?B+樹(shù)索引目錄項(xiàng)記錄頁(yè)管理

    Mysql?InnoDB?B+樹(shù)索引目錄項(xiàng)記錄頁(yè)管理

    這篇文章主要為大家介紹了Mysql?InnoDB?B+樹(shù)索引目錄項(xiàng)記錄頁(yè)管理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • MySQL產(chǎn)生死鎖原因分析講解

    MySQL產(chǎn)生死鎖原因分析講解

    死鎖指的是在兩個(gè)或兩個(gè)以上不同的進(jìn)程或線程中,由于存在共同資源的競(jìng)爭(zhēng)或進(jìn)程(或線程)間的通訊而導(dǎo)致各個(gè)線程間相互掛起等待,如果沒(méi)有外力作用,最終會(huì)引發(fā)整個(gè)系統(tǒng)崩潰
    2022-12-12

最新評(píng)論

烟台市| 陵水| 社旗县| 闽清县| 荥阳市| 宜良县| 崇左市| 云和县| 璧山县| 德庆县| 嵩明县| 集贤县| 喀喇| 望城县| 巴彦淖尔市| 长春市| 普安县| 鄂尔多斯市| 高邮市| 元朗区| 盘山县| 鹤岗市| 宁波市| 东明县| 中牟县| 武城县| 聂荣县| 河东区| 博湖县| 崇礼县| 高清| 阜宁县| 黔东| 巫溪县| 阿荣旗| 时尚| 聂拉木县| 卓尼县| 大田县| 嘉鱼县| 综艺|