1. MySQL索引失效的幾種場景

        共 937字,需瀏覽 2分鐘

         ·

        2022-02-27 00:54


        我們都知道建立索引能夠提高查詢效率,那么是不是任何情況下都能提高呢,當(dāng)然不是的的,下面我們就來列舉一些常見的索引失效的場景。

        借用上一篇文章的dm_person_info表

        在card_code列沒加索引的時,查詢時間如下,大概都在0.07秒。


        ?我們來加上索引試試,加上后查詢效率高了許多。



        ?在正確使用索引的情況下,查詢一行數(shù)據(jù)的時間不到10毫秒,所以顯示0.00 sec .

        1.列類型是字符串,查詢條件未加引號。

        card_code列是身份證號,數(shù)據(jù)類型是varchar,在沒有將證件號碼用引號括起時不會使用索引,此時索引失效。


        ?2.未使用該列作為查詢條件

        索引建在card_code列上,使用tel列作為查詢條件,此時該索引未被使用到,也可以說是失效的。


        3.使用like時通配符在前

        我們可以看到通配符在后面時效率不受影響,說明此時索引未失效,通配符在前時索引失效。

        4. 在查詢條件中使用OR

        查詢條件中使用or會使索引失效,要想是索引生效,需要將or中的每個列都加上索引。

        5.對索引列進(jìn)行函數(shù)運(yùn)算

        ?6.聯(lián)合索引ABC問題

        Mysql從左到右的使用索引中的字段,一個查詢可以只使用索引中的一部份,但只能是最左側(cè)部分。例如索引是index (a,b,c),可以支持a | a,b| a,b,c 3種組合進(jìn)行查找,但不支持 b,c或c進(jìn)行查找 。

        這里只介紹6種比較常見的失效場景,實(shí)際上還有很多,我們在實(shí)際開發(fā)中要注意到這些問題,不能掉到坑里去了,哈哈^_^? 。

        Mysql百萬級數(shù)據(jù)遷移實(shí)戰(zhàn)筆記

        2022-01-14

        為什么大家都說“SELECT *”效率低?

        2021-12-26

        如何從多個維度來分析Redis中常見的幾個重點(diǎn)熱門問題

        2021-12-21

        必須了解的MySQL三大日志:binlog、redo log和undo log

        2021-12-19

        騰訊PHP/GO工程師面試經(jīng)歷

        2021-12-18

        淺析碼農(nóng)技術(shù)人生存之道

        2021-12-11

        瀏覽 66
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 亚洲产国偷v产偷v自拍小说 | 公老粗挺进了我的密道 | 一级黄色免费毛片 | 成人免费大香蕉 | 男人舔女人高潮视频 |