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

mysql索引失效的常見九種原因圖文詳解

 更新時(shí)間:2022年06月01日 11:33:58   作者:book多得  
索引失效這個(gè)問題的前提應(yīng)該是建立了索引,卻沒有使用到,或者沒有完全使用到,下面這篇文章主要給大家介紹了關(guān)于mysql索引失效的常見九種原因的相關(guān)資料,需要的朋友可以參考下

前言:

MySQL中提高性能的一個(gè)最有效的方式是對(duì)數(shù)據(jù)表設(shè)計(jì)合理的索引。索引提供了高效訪問數(shù)據(jù)的方法,并且加快查詢的速度, 因此索引對(duì)查詢的速度有著至關(guān)重要的影響。

  • 使用索引可以快速地定位表中的某條記錄,從而提高數(shù)據(jù)庫查詢的速度,提高數(shù)據(jù)庫的性能。
  • 如果查詢時(shí)沒有使用索引,查詢語句就會(huì)掃描表中的所有記錄。在數(shù)據(jù)量大的情況下,這樣查詢的速度會(huì)很慢。

大多數(shù)情況下都(默認(rèn))采用B+ 樹來構(gòu)建索引。只是空間列類型的索引使R- 樹,并且MEMORY 表還支持hash 索引。其實(shí),用不用索引最終都是優(yōu)化器說了算。

優(yōu)化器是基于什么的優(yōu)化器? 基于cost開銷(CostBaseOptimizer) ,它不是基于規(guī)則( Rule-BasedOptimizer),也不是基于語義。怎么樣開銷小就怎么來。另外, SQL 語句是否使用索引,跟數(shù)據(jù)庫版本、數(shù)據(jù)量、數(shù)據(jù)選擇度都有關(guān)系。

1.最佳左前綴法則

拓展: Alibaba Java 開發(fā)手冊(cè)》 索引文件具有 B-Tree 的最左前綴匹配特性,如果左邊的值未確定,那么無法使用此索引。

2.主鍵插入順序

 如果此時(shí)再插入一條主鍵值為 9 的記錄,那它插入的位置就如下圖:

可這個(gè)數(shù)據(jù)頁已經(jīng)滿了,再插進(jìn)來咋辦呢?我們需要把當(dāng)前 頁面分裂 成兩個(gè)頁面,把本頁中的一些記錄移動(dòng)到新創(chuàng)建的這個(gè)頁中。頁面分裂和記錄移位意味著什么?意味著: 性能損耗 !所以如果我們想盡量 避免這樣無謂的性能損耗,最好讓插入的記錄的 主鍵值依次遞增 ,這樣就不會(huì)發(fā)生這樣的性能損耗了。         

所以我們建議:讓主鍵具有 AUTO_INCREMENT ,讓存儲(chǔ)引擎自己為表生成主鍵, 在插入記錄時(shí)存儲(chǔ)引擎會(huì)自動(dòng)為我們填入自增的主鍵值。這樣的主鍵占用空間小,順序?qū)懭?,減少頁分裂。

3.計(jì)算、函數(shù)、類型轉(zhuǎn)換(自動(dòng)或手動(dòng))導(dǎo)致索引失效

4.范圍條件右邊的列索引失效

例子:

#創(chuàng)建一個(gè)聯(lián)合索引, 注意字段的順序
create index idx_age_classid_name on student(age,classid,name);
#執(zhí)行計(jì)劃
EXPLAIN SELECT SQL_NO_CACHE * FROM student
WHERE student .age = 30 AND student .classId > 20 AND student .name = 'abc' ;  

#再創(chuàng)建一個(gè)聯(lián)合索引,與上面的索引對(duì)比字段順序變了
create index idx_age_name_classid on student(age,name,classid); 

#再執(zhí)行一模一樣的執(zhí)行計(jì)劃
EXPLAIN SELECT SQL_NO_CACHE * FROM student
WHERE student .age = 30 AND student .classId > 20 AND student .name = 'abc' ;

 看到兩個(gè)執(zhí)行計(jì)劃雖然都用到了索引,但是:

  • 第一個(gè)沒用全,只用到了聯(lián)合索引“idx_age_classid_name” 的age和classid。
  • 第二個(gè)把聯(lián)合索引“idx_age_name_classid”的age,name和classid都用上了。

5.不等于(!= 或者<>)導(dǎo)致索引失效

6.is null可以使用索引,is not null無法使用索引

7.like以通配符%開頭索引失效

拓展: Alibaba 《Java 開發(fā)手冊(cè)》 【強(qiáng)制】頁面搜索嚴(yán)禁左模糊或者全模糊,如果需要請(qǐng)走搜索引擎來解決。

8.OR 前后只要存在非索引的列,都會(huì)導(dǎo)致索引失效 

9.數(shù)據(jù)庫和表的字符集統(tǒng)一使用utf8mb4         

統(tǒng)一使用utf8mb4( 5.5.3 版本以上支持 ) 兼容性更好,統(tǒng)一字符集可以避免由于字符集轉(zhuǎn)換產(chǎn)生的亂碼。不同的 字符集 進(jìn)行比較前需要進(jìn)行 轉(zhuǎn)換 會(huì)造成索引失效。

總結(jié)

到此這篇關(guān)于mysql索引失效的常見九種原因的文章就介紹到這了,更多相關(guān)mysql索引失效原因內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 總結(jié)12個(gè)MySQL慢查詢的原因分析

    總結(jié)12個(gè)MySQL慢查詢的原因分析

    這篇文章主要介紹了總結(jié)12個(gè)MySQL慢查詢的原因分析,慢查詢,都是因?yàn)闆]有加索引。如果沒有加索引的話,會(huì)導(dǎo)致全表掃描的,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-08-08
  • mysql主從只同步部分庫或表的思路與方法

    mysql主從只同步部分庫或表的思路與方法

    mysql主從搭建后默認(rèn)同步所有庫,同步原理是通過二進(jìn)制日志方式傳輸,下面這篇文章主要給大家介紹了關(guān)于mysql主從只同步部分庫或表的思路與方法,需要的朋友可以參考下
    2022-06-06
  • MySQL兩種刪除用戶語句的區(qū)別(delete user和drop user)

    MySQL兩種刪除用戶語句的區(qū)別(delete user和drop user)

    這篇文章主要介紹了MySQL兩種刪除用戶語句的區(qū)別(delete user和drop user),幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • linux下如何使用yum源安裝mysql

    linux下如何使用yum源安裝mysql

    這篇文章主要介紹了linux下如何使用yum源安裝mysql問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 安裝配置Zabbix來監(jiān)控MySQL的基本教程

    安裝配置Zabbix來監(jiān)控MySQL的基本教程

    這篇文章主要介紹了安裝配置Zabbix來監(jiān)控MySQL的基本教程,Zabbix擁有web頁面端顯示數(shù)據(jù)的功能,文中的安裝環(huán)境為CentOS系統(tǒng),需要的朋友可以參考下
    2015-12-12
  • MySql查詢時(shí)間段的方法

    MySql查詢時(shí)間段的方法

    這篇文章主要介紹了MySql查詢時(shí)間段的方法,包括了傳統(tǒng)的針對(duì)時(shí)間字段的查詢方法與UNIX時(shí)間戳的查詢技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • Windows系統(tǒng)下MySQL添加到系統(tǒng)服務(wù)方法(mysql解壓版)

    Windows系統(tǒng)下MySQL添加到系統(tǒng)服務(wù)方法(mysql解壓版)

    這篇文章主要介紹了Windows系統(tǒng)下MySQL添加到系統(tǒng)服務(wù)方法,主要針對(duì)mysql解壓版,感興趣的朋友參考下吧
    2016-05-05
  • 保存圖片到MySQL以及從MySQL讀取圖片全過程

    保存圖片到MySQL以及從MySQL讀取圖片全過程

    有人喜歡使用mysql來存儲(chǔ)圖片,而有的人喜歡把圖片存儲(chǔ)在文件系統(tǒng)中,而當(dāng)我們要處理成千上萬的圖片時(shí),會(huì)引起技術(shù)問題,下面這篇文章主要給大家介紹了關(guān)于如何保存圖片到MySQL以及從MySQL讀取圖片的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • MYSQL必知必會(huì)讀書筆記第五章之排序檢索數(shù)據(jù)

    MYSQL必知必會(huì)讀書筆記第五章之排序檢索數(shù)據(jù)

    本文給大家分享mysql必會(huì)必知讀書筆記第五章之排序檢索數(shù)據(jù),小編認(rèn)為非常具有參考價(jià)值,特此分享到腳本之家平臺(tái)供大家參考
    2016-05-05
  • 使用navicat將csv文件導(dǎo)入mysql

    使用navicat將csv文件導(dǎo)入mysql

    這篇文章主要為大家詳細(xì)介紹了使用navicat將csv文件導(dǎo)入mysql,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05

最新評(píng)論

密山市| 宾川县| 北安市| 汉中市| 安仁县| 泌阳县| 潢川县| 新密市| 扶余县| 浦北县| 枝江市| 八宿县| 集安市| 宜黄县| 富宁县| 东丰县| 封丘县| 朝阳市| 绵竹市| 崇信县| 万年县| 大渡口区| 聂荣县| 白城市| 新河县| 舞钢市| 余姚市| 怀远县| 若尔盖县| 淳安县| 五大连池市| 永善县| 织金县| 滨州市| 潜江市| 南平市| 集安市| 隆子县| 桃江县| 全州县| 济阳县|